0

Androidの1つのボタンで奇妙な動作が発生しています。

カスタムボタン(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 に答える