我有一个带有以下布局的自定义listView,我希望它的行为类似于普通的SingleChoiceListView。虽然我为Single_Choice_Mode设置了列表视图,但是当我单击时,单选按钮不会被选中。我究竟做错了什么? 单行的xml布局为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?listPreferredItemHeightSmall"
android:orientation="horizontal"
android:clickable="true"
android:focusable="true"
android:paddingLeft="16dip"
android:paddingRight="12dip" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:gravity="center_vertical|left"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?textColorAlertDialogListItem" />
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:gravity="center_vertical|left"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?textColorAlertDialogListItem" />
</LinearLayout>
<TextView
android:id="@+id/preco"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:ellipsize="marquee"
android:gravity="fill"
android:singleLine="true"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/appgreen" />
<RadioButton
android:id="@+id/radio"
android:layout_width="35dip"
android:layout_height="wrap_content"
android:clickable="false"
android:focusable="false"
android:gravity="center_vertical"
android:paddingRight="12dip" />
</LinearLayout>
答案 0 :(得分:0)
我认为当您点击列表视图中的项目 - 列表视图处理时,请在复选框之前单击。您可以在listView上覆盖onItemClickListener,然后在自定义布局中通过findViewId找到您的复选框,然后以编程方式更改复选框的状态。
答案 1 :(得分:0)
使用此代替android.r.layout.simple_list_item_single_choice
。创建自己的r.layout.my_single_choice.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:gravity="center_vertical"
android:padding="5dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black"
android:textStyle="bold" >
</CheckedTextView>