所以我有以下GridView声明:
<GridView
android:id="@+id/payment_form_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:horizontalSpacing="0dp"
android:listSelector="@null"
android:numColumns="2"
android:padding="0dp"
android:stretchMode="columnWidth"
android:verticalSpacing="0dp" />
GridView上的每个子项都是在适配器上构建的,具有以下布局:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/green_radio"
android:drawablePadding="6dp"
android:gravity="center_vertical"
android:padding="16dp"
android:textColor="@color/text_color"
android:textSize="22sp" />
@drawable/green_radio
是一个StateList drawable,我用它来显示GridView所选项目左侧的箭头。
此代码适用于任何至少具有API级别11(Honeycomb)的Android设备。 在具有先前版本的设备上,当我检查GridView上的项目时,箭头没有出现。
经过一些调试后,我注意到GridView没有将被按下的子项设置为已检查(在API Level 11+上发生的事情),因此不显示箭头。
为什么会发生这种情况?