因此,在我的应用程序的某些州,我想禁用我的设置菜单中的某些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