Intereting Posts
Android – Какой смысл делать домашняя кнопка? Как я могу захватить весь вид в растровое изображение при использовании пешеходного перехода для отображения веб-страницы? Java.lang.ClassCastException: android.widget.TextView нельзя отменить Как включить / выключить все звуки из программ доступности в программном обеспечении Android? Кнопка «ОК» в диалоговом окне «Создать новое виртуальное устройство Android (AVD)» ничего не делает Производительность Guice на Android Как изменить размер подсказки TextInputLayout Как создать пользовательский интерфейс или виджет, который находится поверх всех приложений на Android? Как вставить текст «<<» в TextView? Как разобрать JSON из Java HTTPResponse? Не удалось загрузить собственную библиотеку libnative-platform.so для Linux amd64 Android – Воспроизведение mp3 с байта Нужно показать SQLite-запрос в порядке убывания Проблемы с прозрачной тематикой Автоматическое исполнение Android-проекта с git с помощью Android Studio / Gradle

Нарисуйте селектор сверху – для базовой линейной компоновки?

Я хочу, чтобы состояние щелчка переключателя для простого макета рисовало поверх его детей. Я думаю, что это похоже на атрибут drawSelectorOnTop в ListView. Пример макета:

<LinearLayout android:background="@drawable/my_click_selector"> <LinearLayout android:background="#F00" /> </LinearLayout> --------------- | | | ----------- | | ----------- | | | --------------- 

Итак, у нас есть родительский линейный макет и внутренний ребенок, который имеет сплошной цвет фона (красный). Когда я нажимаю на родителя, фоновый цвет актива изменяется, как определено в моем селекторе, но так как ребенок ближе к пользователю в z-порядке, он остается неизменным.

Есть ли способ, чтобы выбранное селекторное состояние было нарисовано поверх всех детей, а не под ним?

благодаря

Solutions Collecting From Web of "Нарисуйте селектор сверху – для базовой линейной компоновки?"

Я сталкиваюсь с этой проблемой, и я смотрел на ваш вопрос раньше, вот что я сделал и отлично работал:

Вы можете использовать FrameLayout android:foreground для выполнения задания для вас

образец кода

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:descendantFocusability="afterDescendants" android:duplicateParentState="true" android:focusable="true" > <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:descendantFocusability="beforeDescendants" android:focusable="true" android:focusableInTouchMode="true" android:foreground="@drawable/draw_on_top_selector" > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#282828" android:paddingBottom="5dp" > <ImageView android:layout_width="160dp" android:layout_height="90dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_gravity="center_vertical|center_horizontal" android:adjustViewBounds="true" android:contentDescription="@string/app_name" android:scaleType="centerCrop" android:src="@drawable/video_blank" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/episodeImage" android:layout_alignLeft="@id/episodeImage" android:background="@android:color/black" android:gravity="right" android:padding="2dp" android:textColor="#FFFFFF" android:textSize="11sp" /> </RelativeLayout> </FrameLayout> </LinearLayout> 

draw_on_top_selector.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/show_cell_background_selected" android:state_pressed="true"/> <item android:drawable="@drawable/show_cell_background"/> </selector> 

show_cell_background_selected.xml

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <stroke android:width="4dp" android:color="#FFD900" > </stroke> <solid android:color="@android:color/transparent" /> </shape> </item> </layer-list> 

show_cell_background.xml

 <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <stroke android:width="2dp" android:color="#20000000" > </stroke> <solid android:color="@android:color/transparent" /> </shape> </item> </layer-list> 

Недавно я сделал сообщение о создании селектора переднего плана на любом представлении. Это позволит вам избежать вложенных макетов.

Надеюсь, это поможет.

Попробуйте использовать ForegroundLinearLayout https://gist.github.com/chrisbanes/9091754

Вы можете использовать библиотеку ForegroundView