動的に無効にしてクリックリスナーに関連付けることができるチェックボックスがあります。
CheckBox chkbox = (CheckBox)findViewById(R.id.chkboxid);
if(condition) {
chkbox.setEnabled(false);
chkbox.setOnClickListener(displayPopup);
} else {
chkbox.setOnClickListener(handleToggle);
}
これの目的は、チェックボックスが無効になっている場合に、チェックボックスをクリックしたユーザーに、オプションが無効になっている理由に関する詳細情報を提供することです。
その後、無効化されたウィジェットはクリック イベントをクリック リスナーに送信しないことに気付きました。それ以来LinearLayout
、次のようにして、存在するものをクリック可能に設定しようとしました。
CheckBox chkbox = (CheckBox)findViewById(R.id.checkboxName);
LinearLayout layout = (LinearLayout)findViewById(R.id.layoutName);
if(condition) {
chkbox.setEnabled(false);
layout.setClickable(true);
layout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
layout.setOnClickListener(displayPopup);
} else {
chkbox.setOnClickListener(handleToggle);
}
LinearLayout
これは、無効化されたチェックボックス以外の任意の場所をクリックすると機能します。設定に従っていませんFOCUS_BLOCK_DESCENDANTS
。チェックボックスの上に非表示のクリック可能なオブジェクトを配置しようとしましたが、そこでも成功しませんでした。何か案は?
編集: 現在、API レベル 8 で立ち往生しています。そうでない場合は、チェックボックスを無効にする代わりに、チェックボックスのアルファを下げて、少なくとも無効になっているように見えるようにします。