如何使按钮不可点击

4

我现在遇到了一个问题,就是当活动页面处于最后一页时,下一页按钮仍然可以被点击。目前情况是当用户点击该按钮时,会返回到第一个屏幕。请问如何让程序知道何时将该按钮变灰或使其无法点击。

以下是我的代码:

public class ReadingActivity extends Activity implements OnClickListener {

    private ViewFlipper viewFlipper;
    Button btnNext, btnPrev;
    private float lastX;

    /** Called when the activity is first created */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reading);
        viewFlipper=(ViewFlipper)findViewById(R.id.view_flipper);
        btnNext=(Button)findViewById(R.id.btnNext);
        btnPrev=(Button)findViewById(R.id.btnPre);


        btnNext.setOnClickListener(this);
        btnPrev.setOnClickListener(this);

        btnNext.setEnabled(true);
    }



    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        switch(arg0.getId()){
        case R.id.btnNext:
            viewFlipper.setInAnimation(this, R.anim.in_from_right);
            viewFlipper.setOutAnimation(this, R.anim.out_to_left);
            viewFlipper.showNext();
            break;
        case R.id.btnPre:
            viewFlipper.setInAnimation(this, R.anim.in_from_left);
            viewFlipper.setOutAnimation(this, R.anim.out_to_right);
            viewFlipper.showPrevious();
            break;
        }

    }


}
3个回答

4
您可以将OnClickListener设置为null,方法如下:
btnNext.setOnClickListener(null);

这个到底是做什么的?我对Android开发还比较新..谢谢! - Dan
它将停止该对象的 OnClick 方法触发,因为它从 (this) 设置为 (null),这将从该对象中移除监听器。 - JRowan
如果你想把它放回按钮上,将其从null设置回(this)。 - JRowan
你可以使用布尔值来触发是否处于最后一页,将其设置为(null),然后如果用户点击了“上一页”按钮且该布尔值为true或其他值,则将侦听器设置回(this)。 - JRowan
使用ViewFlipper,您需要跟踪索引,可以使用ViewFlipper.getDisplayedChild()方法。 - JRowan
显示剩余4条评论

2
我认为你只需要这个方法。
button.setClickable(false);

谢谢,我已经尝试过button.setClickable了,但它并没有达到我想要的效果.. :( 我有两个一致的按钮,所以只有图像会改变。如果我使用button.setClickable,它会完全禁用它.. - Dan

1
让按钮变灰且不可点击:
在按钮标签中添加 android:enabled="false" 同时使用代码 button.setEnabled(false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接