0

我正在使用一个在所有活动中都能正常工作的选择器,您可以在下面看到它的 XML。

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_pressed="true"
    android:drawable="@drawable/active_date_horizontal_5_pressed" /> <!-- pressed -->
<item
    android:state_focused="true"
    android:drawable="@drawable/active_date_horizontal_5_pressed" /> <!-- focused -->
<item
    android:drawable="@drawable/active_date_horizontal_5" /> <!-- default -->

除了一项活动外,它的作用并不可笑。您可以在下面的三个屏幕截图中看到选择器在前两个屏幕截图中正常工作,而在最后一个屏幕截图中不起作用。

1)第一个屏幕截图

2)第二个屏幕截图

3)最后的屏幕截图,选择器不起作用

这些是自定义的 GridView,其中填充了自定义的 BaseAdapter。GridViews 中的单元格有一个 Xml 布局,其背景是选择器。有任何想法吗?

4

1 回答 1

2

看来我解决了自己的问题。

您可以看到我在下面的选择器中应用的 Xml 布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:orientation="vertical"
android:background="@drawable/calendar_cell_selector" >

<TextView
    android:id="@+id/txtWeeklyEventName"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ImageView
    android:id="@+id/imgCornerWeekly"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/txtWeeklyEventName"
    android:layout_alignRight="@+id/txtWeeklyEventName"
    android:src="@drawable/corner_orange"
    android:visibility="visible" />

</RelativeLayout>

您可以看到 RelativeLayout 的背景是选择器,但 TextView 会填充整个布局,因此 Android 无法处理选择器。

因此,我从 RelativeLayout 中删除了背景并将其设置为 TextView,它完全可以工作。

谢谢我!

于 2013-01-30T12:34:11.953 回答