因此,在我的應用程序的某些州,我想禁用我的設置菜單中的某些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. IIS註冊表仍然存在,即使它被禁用
- 4. 禁用WPF按鈕,但仍然吞下點擊事件
- 5. android honeycomb - 如何使選項菜單項看起來被禁用?
- 6. TextView點擊禁用和隱藏,但仍然是點擊工作 - Android
- 7. 禁用ActionBar菜單項,但仍可點擊
- 8. INSERT INTO語法看起來正確,但仍然失敗
- 9. 按鈕禁用,但看起來活躍
- 10. 即使GetLastError全部返回,我仍然看不到註冊表項0
- 11. 使用jQuery使文本只讀,但仍然可點擊
- 12. WISE - COM服務器註冊選項「不註冊」不起作用?
- 13. Jquery複選框仍然檢查點擊
- 14. 無法使用registerFactoryLocation在mozilla上註冊首選項
- 15. 按鈕仍然禁用如果選擇仍然存在,但輸入框爲空
- 16. jQuery:捕獲點擊,但仍然允許選擇文本
- 17. 如何讓TextView顯示爲禁用狀態,但仍然響應點擊?
- 18. 使用註冊表禁用BCD testsigning選項
- 19. 使div仍然保持,即使點擊
- 20. 仍然有上點擊
- 21. 碰撞沒有註冊,但仍然影響
- 22. 遷移到GCM,但仍然有C2DM註冊ID
- 23. session_start()繼承,但是已註冊函數仍然重定向
- 24. jQuery手風琴無法禁用點擊仍然動畫時?
- 25. 如何使HTML看起來被禁用?
- 26. 用空格縮進但在Vim中仍然使用首選的shiftwidth?
- 27. Fotorama 4選項:禁用點擊圖片
- 28. JFrame即使在看起來失去焦點後仍繼續獲得擊鍵
- 29. 自定義首選項不可點擊
- 30. 已禁用RadioButton仍然可以選擇
創意和巧妙的解決辦法,謝謝! – pgsandstrom 2010-08-25 15:14:10