【问题标题】:Android: How to detect when a disabled Checkbox is touched?Android:如何检测禁用的复选框何时被触摸?
【发布时间】:2014-04-18 02:51:24
【问题描述】:

我要求有时我在ListView 中的复选框不可勾选。我正在使用setEnabled(false)

当用户仍然点击禁用的Checkbox 时,是否会触发 toast 消息?

我还在使用自定义 ArrayAdapter 覆盖 getView 方法。

【问题讨论】:

    标签: android listview checkbox android-arrayadapter


    【解决方案1】:

    您可以 :) 使用扩展 CheckBox 并覆盖 onTouchEvent 的辅助类,有点像:

    public class DisabledTouchableCheckbox extends CheckBox {
    
        public DisabledTouchableCheckBox(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if ((!isEnabled()) && (event.getAction()==MotionEvent.ACTION_DOWN)) 
                showToast();
            return super.onTouchEvent(event);
        }
    
        private void showToast() {
                ... show your toast
        }
    
    }
    

    然后在您的 XML 中,您必须将 <CheckBox> 更改为 <com.YOURPACKAGE.DisabledTouchableCheckBox>

    【讨论】:

    • 这可能是一个可行的解决方案,我希望这被视为一个解决方案。
    • 谢谢,我明天会尝试实现这个。
    • 工作愉快。非常感谢您的帮助。
    【解决方案2】:

    你不能。他们称之为禁用是有原因的。

    您可以使用相同的资产创建自定义复选框,但我想这只是在浪费时间。用户会知道该复选框已禁用,因为禁用的小部件以 30% 的 alpha 显示。

    【讨论】:

      猜你喜欢
      • 2012-12-18
      • 2010-11-09
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      相关资源
      最近更新 更多