0

我在使用 Android 中的一个按钮时遇到了一种奇怪的行为。

我创建了一个自定义按钮 (MyButton),并在其上添加了一些方法来扩展默认视图,例如添加禁用/启用方法来更改按钮。

这是MyButton的代码:

public class MyButton extends Button {
    /** Enabled. */
    private boolean enabled = true;

    /** The default bg. */
    private Drawable defaultBG = null;

    /** The disabled drawable. */
    private int disabledDrawable = 0;

    /******************/
    /** CONSTRUCTORS **/
    /**     [...]    **/
    /******************/

    /**
     * Disable.
     */
    public void disable()
    {
        this.setClickable(false);
        this.setFocusable(false);
        Log.d("MY_BUTTON", "DISABLED!!");
        if(!enabled || disabledDrawable == 0)
            return;

        defaultBG = this.getBackground();
        this.setBackgroundResource(disabledDrawable);

        enabled = false;
    }

    /**
     * Enable.
     */
    public void enable()
    {
        this.setClickable(true);
        this.setFocusable(true);
        Log.d("MY_BUTTON", "ENABLED!!");
        if(enabled)
            return;

        this.setBackgroundDrawable(defaultBG);

        enabled = true;
    }
}

这是我在布局中的 Button 声明:

<com.xxxx.library.View.MyButton
                    android:id="@+id/buttonVideo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:text="@string/upload_camera_video" />

这就是我在我的活动中所做的:

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.upload);
    super.onCreate(savedInstanceState);
    cameraVideo = (MyButton) findViewById(R.id.buttonVideo);
    cameraVideo.setDisabledBG(R.drawable.disabled_buttons);
    cameraVideo.diable();

    cameraVideo.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            if(!v.isClickable())
            {
                log("NOT CLICKABLE!!!");
                return;
            }

            log("CLICKABLE!!!");
        }
    });
}

logcat 中的结果是这样的:

11-14 11:33:37.681: D/MY_BUTTON(6800): DISABLED!!
11-14 11:33:43.446: D/UploadActivity(6800): CLICKABLE!!!

这些按钮似乎被禁用,但仍然接受点击事件,尽管它具有我分配给它的禁用背景并且它不可聚焦。

4

1 回答 1

5

您需要使用该方法setEnabled(false)禁用该按钮。

于 2011-11-14T11:47:57.970 回答