0

使用 aGridView并尝试将所选项目突出显示为灰色。这工作正常,直到我在 Android 2.3 上测试它。在 Android 2.3 上,当您选择一个项目时会发生以下情况:

带选择的 GridView

在这个屏幕截图中,我点击了餐厅项目。本质上,整个GridView项目以灰色突出显示,而不是所选项目。但是,在 Android 4.0+ 中,这GridView可以按预期工作,并且点击项目正确地突出显示它们(而不是GridView!)以灰色显示。

这是我的 layout.xml 的相关部分:

<FrameLayout
    android:id="@+id/grid_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <GridView 
        android:id="@+id/categories_grid_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:horizontalSpacing="10dp"
        android:numColumns="4"
        android:listSelector="@drawable/list_view_selector"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" />
</FrameLayout>

这是res/drawable/list_view_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:state_enabled="true"
        android:drawable="@color/light_grey" />
    <item
        android:state_focused="true"
        android:state_enabled="true"
        android:drawable="@color/light_grey" />
    <item 
        android:drawable="@color/transparent" />
</selector>

我已经尝试过这种解决方法,但它只会导致在 2.3 和 4.0+ 设备上根本没有突出显示(甚至是选定的项目)。

任何帮助表示赞赏。

4

2 回答 2

4

改为将选择器应用于background项目布局并设置android:listSelector="@null".

网格:

<FrameLayout
    android:id="@+id/grid_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <GridView 
        android:id="@+id/categories_grid_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:horizontalSpacing="10dp"
        android:numColumns="4"
        android:listSelector="@null"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" />
</FrameLayout>

物品:

<FrameLayout
    android:id="@+id/grid_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/list_view_selector">
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</FrameLayout>
于 2013-10-30T21:24:46.150 回答
0
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/calendergrid"
        android:layout_width="42dp"
        android:layout_height="45dp"
        android:gravity="center"
        android:textColor="#ffffff"
        android:textStyle="bold"
         android:background="@drawable/listselectorforgridview"
        >
</TextView>

只需粘贴并使用...

ArrayAdapter<String> dateadapter = new ArrayAdapter<String>(context,
                R.layout.textviewforcalendergrid, calenderdays);
于 2013-12-18T06:33:19.150 回答