You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ImageButton仅显示在ViewPager的最后一页?

让ImageButton仅在ViewPager最后一页显示的修改方案

核心思路

通过控制按钮的可见性,初始时隐藏按钮,当ViewPager切换到最后一页时显示,其他页面则隐藏。


具体修改步骤

1. 初始隐藏按钮

方案一(XML中设置):
在activity_welcome2.xml的ImageButton标签中添加android:visibility="gone",让按钮默认隐藏:

<ImageButton
    android:id="@+id/next3"
    android:layout_width="99dp"
    android:layout_height="45dp"
    android:background="@android:color/transparent"
    android:scaleType="fitCenter"
    android:visibility="gone" <!-- 添加这行 -->
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.822"
    app:srcCompat="@drawable/next" />

方案二(Java代码中设置):
如果不想修改XML,也可以在Welcome_Activity.java的onCreate方法中,初始化按钮后添加隐藏代码:

// transition button to Signup page
nextBtn = (ImageButton) findViewById(R.id.next3);
nextBtn.setVisibility(View.GONE); // 添加这行隐藏按钮
nextBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Welcome_Activity.this,MainActivity.class);
        startActivity(intent);
    }
});

2. 监听ViewPager页面切换,控制按钮可见性

修改Welcome_Activity.java中ViewPager.OnPageChangeListener的onPageSelected方法,添加按钮显示/隐藏的逻辑:

mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    @Override
    public void onPageSelected(int position) {
        createDots(position);
        // 判断是否是最后一页,控制按钮显示
        if (position == layouts.length - 1) {
            nextBtn.setVisibility(View.VISIBLE);
        } else {
            nextBtn.setVisibility(View.GONE);
        }
    }

    @Override
    public void onPageScrollStateChanged(int state) {}
});

完整修改后的Welcome_Activity.java代码片段

package com.group7.salitongue;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;

public class Welcome_Activity extends AppCompatActivity {

    private ViewPager mPager;
    private int[] layouts = { R.layout.activity_main, R.layout.activity_splashscreen2, R.layout.activity_welcome };
    private MpagerAdapter mpagerAdapter;

    private LinearLayout Dots_Layout;
    private ImageView[] dots;

    private ImageButton nextBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome2);

        mPager = (ViewPager) findViewById(R.id.viewPager);
        mpagerAdapter = new MpagerAdapter(layouts, this);
        mPager.setAdapter(mpagerAdapter);

        Dots_Layout = (LinearLayout) findViewById(R.id.dotsLayout);
        createDots(0);

        mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

            @Override
            public void onPageSelected(int position) {
                createDots(position);
                // 控制按钮显示/隐藏
                if (position == layouts.length - 1) {
                    nextBtn.setVisibility(View.VISIBLE);
                } else {
                    nextBtn.setVisibility(View.GONE);
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {}
        });

        // transition button to Signup page
        nextBtn = (ImageButton) findViewById(R.id.next3);
        nextBtn.setVisibility(View.GONE); // 初始隐藏按钮
        nextBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Welcome_Activity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }

    private void createDots(int current_position) {
        if(Dots_Layout != null)
            Dots_Layout.removeAllViews();

        dots = new ImageView[layouts.length];

        for (int i = 0; i < layouts.length; i++) {
            dots[i] = new ImageView(this);
            if (i == current_position) {
                dots[i].setImageDrawable(ContextCompat.getDrawable(this, R.drawable.active_dots));
            }
            else {
                dots[i].setImageDrawable(ContextCompat.getDrawable(this, R.drawable.default_dots));
            }

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT
            );
            params.setMargins(4, 0, 4, 0);
            Dots_Layout.addView(dots[i],params);
        }
    }
}

内容的提问来源于stack exchange,提问作者reese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:09:29