我有一個複選框,可以動態禁用並綁在點擊監聽器:安卓:禁用複選框不響應點擊事件
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 lvl 8中,否則我會嘗試降低複選框的alpha值而不是禁用它,以至少模擬被禁用的外觀。
我考慮過這個。問題是我希望用戶能夠直觀地看到它被啓用或禁用,因爲條件可能會改變,而用戶無需主動做任何事情。這可能聽起來令人困惑,但根據其他用戶(如管理員)的設置,條件是真或假,如果管理員用戶決定使其可用,我希望他們看到不同之處。 – nagem 2013-03-20 22:18:25
@Megan你可以用自定義複選框背景實現它:) – Sajmon 2013-03-20 22:28:05
這就是我的團隊最終決定的。去使用一些信息[這裏](http:// stackoverflow。com/questions/3965484/custom-checkbox-image-android)作爲參考。 – nagem 2013-03-21 18:10:49