首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓:不能检查CheckedTextView吗?

安卓:不能检查CheckedTextView吗?
EN

Stack Overflow用户
提问于 2010-04-13 13:41:43
回答 7查看 51.1K关注 0票数 51

最初,我想要一个复选标记,将文本放在复选标记的左侧。在这个网站上搜索后,我发现最好的解决办法是android:CheckedTextView?但是,我发现复选标记不能由用户手动更改。这是设计出来的吗?

代码语言:javascript
运行
复制
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/autoupdatecheckboxview" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:gravity="center_vertical" 
 android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
 android:paddingLeft="6dip" 
 android:paddingRight="6dip" 
 android:text="Pop up a message when new data available" 
 android:typeface="sans" android:textSize="16dip"/> 
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-04-15 13:41:45

您可能只想使用常规的CheckBox (它继承自Button,因此也就是TextView)。CheckedTextView专为处理列表视图而设计。示例CheckBox布局XML如下:

代码语言:javascript
运行
复制
<CheckBox
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Pop up a message when new data available"
    android:textSize="16dip" />
票数 38
EN

Stack Overflow用户

发布于 2010-05-11 05:44:43

实现你正在寻找的东西是可能的,也是有些简单的。是的,CheckedTextView主要用于在ListView的行中拥有单个Checkable视图,该视图使用choiceMode控制其子对象的可检查状态。但是,由于checkbox本身似乎不支持右对齐的复选框,而CheckedTextView是一个右对齐的复选框,因此使用那里的内容是有意义的。

由于ListView控制列表项的选中状态,因此CheckedTextView本身不响应单击事件,并且默认情况下不能单击或聚焦。但是,它确实会响应按下和聚焦的状态--这意味着它可以接收焦点和单击事件,并且看起来与复选框看起来一样正确。唯一缺少的是,它不会在单击时切换其选中状态。因此,调用.toggle()的快速OnClickListener将为您提供所需的最终结果。

总而言之,你需要3样东西: clickable、focusable和onClickListener:

代码语言:javascript
运行
复制
    CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.CheckedTextView01);
    chkBox.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            ((CheckedTextView) v).toggle();
        }
    });

和布局文件:

代码语言:javascript
运行
复制
<CheckedTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/CheckedTextView01"
    android:checked="true"
    android:clickable="true"
    android:focusable="true"
    android:text="Label on Left Side of Checkbox."
    />
票数 130
EN

Stack Overflow用户

发布于 2012-02-01 17:37:46

您可以通过以下方式使用和切换CheckedTextView:

在布局中:

代码语言:javascript
运行
复制
<CheckedTextView
        android:id="@+id/cv_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some text here" 
        android:textSize="18sp"
        android:gravity="center_vertical"
        android:clickable="true"
        android:checkMark="@drawable/btn_check_off"
        android:focusable="true"
        android:checked="false"
        android:onClick="toggle"/>

在您的活动中:

代码语言:javascript
运行
复制
public void toggle(View v)
{
    CheckedTextView cView = (CheckedTextView) v.findViewById(R.id.cv_file_name);
        if (cView.isSelected())
        {
            cView.setSelected(false);
            cView.setCheckMarkDrawable (R.drawable.btn_check_off);
        }
        else
        {
            cView.setSelected(true);
            cView.setCheckMarkDrawable (R.drawable.btn_check_on);
        }
}

别忘了把抽屉。我是从SDK ...\android-sdk-windows\platforms\android-10\data\res\drawable-mdpi\得到的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2627222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档