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!!!
ボタンが無効になっているように見えますが、無効な背景が割り当てられているにもかかわらず、クリックイベントは受け入れられますが、フォーカスできません。
ありがとうございました。しかし、その後setClickableの目的は何ですか? – SERPRO
setClickableはあなたが思うように機能しますが、setOnClickListenerを呼び出すと、コールバックを設定するだけでなく、再びクリック可能になります。 (そこに行った、それを行った:) – H9kDroid