因此,在我的應用程序的某些州,我想禁用我的設置菜單中的某些CheckBoxPreferences。但是,如果用戶點擊它們,我想要顯示說明性的敬酒。如果我只是做setEnable(false);在CheckBoxPreference上,我確實擁有正確的外觀和感覺。但我不能得到一個吐司點擊顯示。另一方面,我沒有手動使CheckBoxPreference看起來像它被禁用。使首選項看起來禁用,但仍然註冊點擊
10
A
回答
18
除了禁用首選項外,還可以僅禁用首選項的視圖。
public class DisabledAppearanceCheckboxPreference extends CheckBoxPreference {
protected boolean mEnabledAppearance = false;
public DisabledAppearanceCheckboxPreference(Context context,
AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
boolean viewEnabled = isEnabled()&&mEnabledAppearance;
enableView(view, viewEnabled);
}
protected void enableView(View view, boolean enabled){
view.setEnabled(enabled);
if (view instanceof ViewGroup){
ViewGroup grp = (ViewGroup)view;
for (int index = 0; index < grp.getChildCount(); index++)
enableView(grp.getChildAt(index), enabled);
}
}
public void setEnabledAppearance(boolean enabled){
mEnabledAppearance = enabled;
notifyChanged();
}
@Override
protected void onClick() {
if (mEnabledAppearance)
super.onClick();
else{
// show your toast here
}
}
}
0
即使您希望禁用,則可以收到OnTouchEvents:
public class MyPreferenceFragment extends PreferenceFragment {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
final ListView listView = (ListView) view.findViewById(android.R.id.list);
listView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
int position = listView.pointToPosition((int) event.getX(), (int) event.getY());
ListAdapter adapter = listView.getAdapter();
Preference preference = (Preference) adapter.getItem(position);
if (!preference.isEnabled())
Toast.makeText(getActivity(), "Sorry, this setting is not available!", Toast.LENGTH_LONG).show();
return false;
}
});
return view;
}
...
}
相關問題
- 1. 無法使用自定義首選項註冊點擊事件
- 2. 禁止選擇某些ListView項目,但仍然獲得點擊事件?
- 3. 禁用WPF按鈕,但仍然吞下點擊事件
- 4. TextView點擊禁用和隱藏,但仍然是點擊工作 - Android
- 5. INSERT INTO語法看起來正確,但仍然失敗
- 6. Jquery複選框仍然檢查點擊
- 7. jQuery:捕獲點擊,但仍然允許選擇文本
- 8. 按鈕仍然禁用如果選擇仍然存在,但輸入框爲空
- 9. 無法使用registerFactoryLocation在mozilla上註冊首選項
- 10. jQuery手風琴無法禁用點擊仍然動畫時?
- 11. 碰撞沒有註冊,但仍然影響
- 12. session_start()繼承,但是已註冊函數仍然重定向
- 13. JFrame即使在看起來失去焦點後仍繼續獲得擊鍵
- 14. FCM仍然使用註冊令牌來發送像GCM一樣的通知?
- 15. 保存應用程序首選項...註冊表/文件?
- 16. JQuery UI選項卡 - 單擊選項卡將啓用/禁用按鈕 - 期待暫時禁用選項卡點擊
- 17. C#禁用viewstate,但仍然使用ViewState [「item」]
- 18. 接收成功響應,但仍然使用ajax禁用按鈕
- 19. 元素點擊vs文檔點擊首選項
- 20. jQuery沒有註冊點擊
- 21. JavaScript來禁用點擊
- 22. 啓用/禁用首選項收聽者
- 23. 解密響應仍然看起來編碼錯誤
- 24. 使用pygame註冊擊鍵
- 25. 如何使收音機看起來像禁用,但不指定禁用=「禁用」,只是使用css和js
- 26. 爲什麼在ExtJs中禁用節點會使複選框仍然可用?
- 27. 使用aio_write(),但仍然看到數據通過緩存?
- 28. 註冊jquery單選按鈕單擊事件不起作用
- 29. 應用盡快crashs我點擊註冊
- 30. UserControl不透明度0,但仍然可點擊
創意和巧妙的解決辦法,謝謝! – pgsandstrom 2010-08-25 15:14:10