【问题标题】:Android custom CheckedTextViewAndroid 自定义 CheckedTextView
【发布时间】:2014-03-27 00:16:44
【问题描述】:

我想在我的几个checkedtextview 中自定义复选标记。我想使用一个“简单”的解决方案,所以我这样做了:

    if(serviceChecked.isChecked()){
    serviceChecked.setChecked(false);
    serviceChecked.setCheckMarkDrawable(null);
} else {
    serviceChecked.setChecked(true);
    serviceChecked.setCheckMarkDrawable(R.drawable.ic_action_done);
}

我对这个解决方案有两个问题:

第一个是,它只在第一次运行,当我检查我的一个 checktextview,取消选中,然后再次检查时,我的 drawable 不可见。

第二个问题是,我们可以再次看到“默认”复选标记(蓝色)......

我该如何解决?

谢谢,

【问题讨论】:

    标签: android custom-component checked


    【解决方案1】:

    扩展 CheckTextBox,您不需要更改 setCheckMarkDrawable。只需设置一次,setChecked 应该适当地设置检查/非检查状态。你的drawable应该用XML定义,like this:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
    
        <item android:state_checked="true"
            android:drawable="@drawable/checkbox_checked" /> <!-- checked -->
    
        <item android:state_pressed="true"
            android:drawable="@drawable/checkbox_checked" /> <!-- pressed -->
    
        <item android:drawable="@drawable/checkbox_default" /> <!-- default -->
    
    </selector>
    

    【讨论】:

    • 好吧好吧,所以我不能保留默认的“案例”,而只是添加我的可绘制图标以显示它已被选中?
    • 你没听懂我说的,但没关系 :D 我要试试你的解决方案,谢谢 :)
    • 您可以只添加可绘制对象,但此时您将执行一个真正自定义的 CheckTextBox。如果你这样做,那么你想管理可见性或交换图标,而不是完全删除它。
    • mhhh,我不确定是否理解:/ 我尝试了您的解决方案,但问题是“默认检查”仍然可见。为什么?
    • CheckTextBox 不会使复选标记不可见,而是切换可绘制对象。试试你的复选框的非选中版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多