2011-11-14 8 views
0

Androidでボタンが1つ奇妙な動作をしています。クリックできないボタンはonClickメソッドに入ります

私はカスタムボタン(MyButton)を作成しました。ボタンを変更するための無効/有効化メソッドの追加など、deafultビューを拡張するためのメソッドをいくつか追加しました。ここで

は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; 
    } 
} 

は、レイアウトの私のボタンの宣言です:

<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

ボタンを無効にするには、方法setEnabled(false)を使用する必要があります。

+0

ありがとうございました。しかし、その後setClickableの目的は何ですか? – SERPRO

+1

setClickableはあなたが思うように機能しますが、setOnClickListenerを呼び出すと、コールバックを設定するだけでなく、再びクリック可能になります。 (そこに行った、それを行った:) – H9kDroid

関連する問題