14

标题不言自明。我已经阅读了几篇文章,主题,但仍然没有弄清楚如何使用checkedtextview。我想要一个带有可检查项目的列表视图。在下面的代码中,我使用了一个列表视图并用一个字符串数组填充它。但是如何将其更改为checkedtextview?

删除.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:paddingTop="4dip"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:id="@+id/linlay0"
     android:background="@color/list_bg">
  <TextView 
        android:id="@+id/TextView00"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#D8D8D8"
        android:textColor="#424242"
        android:gravity="center_horizontal|center_vertical"
        android:textSize="20px"
        android:height="40px"
        android:textStyle="bold"
        />
     <ListView android:id="@+id/ListView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

删除_lv.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
android:id="@+id/list_content"
android:textColor="#222222"
android:gravity="center"
android:text="sample"
android:layout_margin="4dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</LinearLayout>

删除.java:

public class Delete extends Activity {

    ListView lv1;
    ArrayAdapter<String> adapter1;
    private String lv_items[] = { "Android", "iPhone", "BlackBerry",
                 "AndroidPeople", "J2ME", "Listview", "ArrayAdapter", "ListItem",
                 "Us", "UK", "India" };

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.delete);

TextView tv0 = (TextView)findViewById(R.id.TextView00);
tv0.setText("Deletes");

lv1 = (ListView) findViewById(R.id.ListView01);
adapter1 = new ArrayAdapter<String>(Delete.this,R.layout.list_black_text,R.id.list_content, lv_items);
lv1.setAdapter(adapter1);
adapter1.notifyDataSetChanged();

}
}
4

5 回答 5

17

在您的 xml 文件中,您使用 textview 作为列表项。而不是那个用途CheckedTextView。您可以直接从小部件调色板中拖放它。您可以CheckedTextView同时使用TextViewCheckBox。以下是如何使用它的示例

   <CheckedTextView 
      xmlns:android="http://schemas.android.com/apk/res/android"     
      style="@style/NormalText"  
      android:id="@+id/checkList" 
      android:paddingLeft="20dip" 
      android:paddingRight="20dip" 
      android:paddingTop="10dip"
      android:paddingBottom="10dip" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="?android:attr/listPreferredItemHeight"  
      android:gravity="center_vertical"  
      android:checkMark="@drawable/our_checkbox"></CheckedTextView>
于 2011-05-25T09:03:12.933 回答
4

您可以使用android:drawableLeft设置左侧的复选框。您可以使用下面的代码片段来实现它。

<CheckedTextView
    android:id="@+id/checkedTextView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableLeft="@drawable/custom_radio_check"
    android:gravity="center_vertical"
    android:textSize="12sp"
    android:textColor="#3d484d"
    android:paddingLeft="14dp"
    android:paddingTop="12dp"
    android:paddingBottom="12dp"
    />

这会将您的选择器移动到文本的左侧。您可以调整其余参数,如填充、重力等。

于 2013-06-07T11:53:21.077 回答
4

这是在android中使用默认CheckdTextView的代码

<CheckedTextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:checkMark="?android:attr/textCheckMark"
                android:paddingLeft="6dip"
                android:paddingRight="6dip"
                android:checked="true"
                android:gravity="center_vertical"
                android:text="- Action finished"/>
于 2017-11-23T09:25:06.423 回答
2

这是我在 SingleChoiceDialog 中的使用

1.select_dialog_singlechoice.xml

<?xml version="1.0" encoding="UTF-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@style/PopupSelectList"
    android:checkMark="@drawable/radio"
    android:ellipsize="marquee"
    android:gravity="center_vertical"
    android:paddingLeft="12.0dip"
    android:paddingRight="10.0dip" />

2.style.xml

<style name="PopupSelectList">
    <item name="android:textSize">16.0sp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:background">@drawable/list_item_selector</item>
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:minHeight">@dimen/dialog_select_height</item>
</style>

3.ratio.xml

<?xml version="1.0" encoding="UTF-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/dot_selected" android:state_checked="true" android:state_window_focused="false"/>
    <item android:drawable="@drawable/dot_normal" android:state_checked="false" android:state_window_focused="false"/>
    <item android:drawable="@drawable/dot_normal" android:state_checked="false"/>
    <item android:drawable="@drawable/dot_selected" android:state_checked="true"/>
</selector>

4.在Adapter的getView中

CheckedTextView title = (CheckedTextView) convertView
            .findViewById(android.R.id.text1);
    title.setText(mItems[position]);
    title.setSelected(mCheckedItem == position ? true : false);
                title.setCheckMarkDrawable(position == mCheckedItem ?                   R.drawable.dot_selected
            : R.drawable.dot_normal);
于 2013-10-26T03:50:23.050 回答
-1

您可以在适配器布局中编写具有 CheckBox 和 textview 的自定义适配器。然后在列表的 setOnItemClick 侦听器中处理多选和单选。

有关更多信息,您可以查看此链接How to change ListView Selected items color from default to red without using selector

于 2015-01-08T12:24:38.303 回答