CheckedTextView和AppCompatCheckedTextView

 

AppCompatCheckedTextView是继承自CheckedTextView的,在Androidx中进行支持。CheckedTextView可以看成是CheckBox、RadioGroup、TextView的组合使用,可以显示文字的同时进行单选或者复选。

当我们配合CheckedTextView使用ListView(RecyclerView不支持该方法的使用)时,使用setChoiceMode设置CHOICE_MODE_SINGLE(单选模式,只能选中一个选项)或者CHOICE_MODE_MULTIPLE时(复选模式,可以选中多个选项)。反正这控件还是很好用的,推荐大家使用。

废话不多说,贴上代码,兄弟你跑一下啥都知道了:

CheckedTextView和AppCompatCheckedTextView_第1张图片

如上图片我使用android:checkMarkTint="@android:color/black"和android:checkMarkTintMode="src_in"的效果将我使用checkMark属性的效果给覆盖了。

CheckedTextView和AppCompatCheckedTextView_第2张图片

class CheckTextViewFragment : Fragment(), View.OnClickListener {
    private var param1: String? = null
    private var param2: String? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    private lateinit var binding: FragmentCheckTextViewBinding
    private var mContext: Context? = null
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_check_text_view, container, false)
        binding.listener = this
        mContext = context
        initData()
        return binding.root
    }

    private fun initData() {
        val mData = ArrayList()
        for (i in 0..4) {
            mData.add("item$i")
        }

        //通过listView设置模式  CHOICE_MODE_SINGLE(单选模式)
        binding.listView.choiceMode = AbsListView.CHOICE_MODE_MULTIPLE

        // 或者使用系统默认的布局 ,布局只决定显示样式,不决定是是单选还是复选模式
        // android.R.layout.simple_list_item_single_choice  显示的是圆的选择框
        // android.R.layout.simple_list_item_multiple_choice    显示的是方框的选择框
        if (context != null) {
            val mContext = context as Context
            val adapter = ArrayAdapter(mContext, R.layout.item_checked_textview)
            adapter.addAll(mData)
            listView.adapter = adapter
        }
    }

    override fun onClick(v: View) {
        when (v.id) {
            R.id.checkbox2 -> {
                //反转当前视图的选中状态,选中变为不可选不可选变为可选
                binding.checkbox2.toggle()
                //在单选模式下获取被选中的item的索引index
                tvCheckCount.text = "选中的索引" + listView.checkedItemPosition
            }
            R.id.checkbox3 -> {
                binding.checkbox3.toggle()
                // 在复选模式下获取item的选中Boolean集
                tvCheckCount.text = "选中的数组" + listView.checkedItemPositions.size()
            }
            else -> println("未知类型无法判断")
        }
    }
}

 Fragment的布局文件:



    

        
    

    


        


        
        
        

        

        

        

        

 选项列表Item布局文件




    
    
    
    

    
    


    

selector_checked_textview.xml文件如下:


    
    
    
    

其他常用的方法:

 

1.是否选中。
public boolean isChecked ()

2.为一个给定的Drawable设定检查标记。当isChecked()为true时则绘制
public void setCheckMarkDrawable (Drawable d)

3.为一个给定的Drawable设定检查标记,使用它的资源id来标识。当isChecked()为true时则绘制
public void setCheckMarkDrawable (int resid)

4.改变文本视图的选中状态
public void setChecked (boolean checked)

 

 

你可能感兴趣的:(Android技术篇)