最初,我想要一个复选标记,将文本放在复选标记的左侧。在这个网站上搜索后,我发现最好的解决办法是android:CheckedTextView?但是,我发现复选标记不能由用户手动更改。这是设计出来的吗?
<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"/>
发布于 2010-04-15 05:41:45
您可能只想使用常规的CheckBox
(它继承自Button
,因此也就是TextView
)。CheckedTextView
专为处理列表视图而设计。示例CheckBox
布局XML如下:
<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" />
发布于 2010-05-10 21:44:43
实现你正在寻找的东西是可能的,也是有些简单的。是的,CheckedTextView
主要用于在ListView
的行中拥有单个Checkable
视图,该视图使用choiceMode
控制其子对象的可检查状态。但是,由于checkbox本身似乎不支持右对齐的复选框,而CheckedTextView是一个右对齐的复选框,因此使用那里的内容是有意义的。
由于ListView控制列表项的选中状态,因此CheckedTextView本身不响应单击事件,并且默认情况下不能单击或聚焦。但是,它确实会响应按下和聚焦的状态--这意味着它可以接收焦点和单击事件,并且看起来与复选框看起来一样正确。唯一缺少的是,它不会在单击时切换其选中状态。因此,调用.toggle()
的快速OnClickListener将为您提供所需的最终结果。
总而言之,你需要3样东西: clickable、focusable和onClickListener:
CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.CheckedTextView01);
chkBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
((CheckedTextView) v).toggle();
}
});
和布局文件:
<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."
/>
发布于 2012-02-01 09:37:46
您可以通过以下方式使用和切换CheckedTextView:
在布局中:
<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"/>
在您的活动中:
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\得到的。
https://stackoverflow.com/questions/2627222
复制