gridview listSelector focusableInTouchMode - PullRequest
       25

gridview listSelector focusableInTouchMode

0 голосов
/ 11 декабря 2019

Я создаю кастомный лаунчер, которым управляет d-pad и тач. чтобы сфокусироваться на элементе, я установил селектор XML для селектора списка и установил пользовательский фон, когда он получил фокус. тем не менее, элемент также получает фокус, когда я нажимаю его в сенсорном режиме.

Мне бы хотелось как-то установить focusableInTouchMode в false для селектора списка, чтобы фон не отображался при нажатии.

gridview XML:

 <GridView
    android:id="@+id/appsContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:choiceMode="singleChoice"
    android:clipToPadding="false"
    android:columnWidth="@dimen/app_row_column_width"
    android:fadingEdge="none"
    android:horizontalSpacing="@dimen/app_row_horizontal_spacing"
    android:numColumns="auto_fit"
    android:overScrollMode="never"
android:listSelector="@drawable/bg_list_selector"
android:focusableInTouchMode="false"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:scrollbars="none"
    android:stretchMode="spacingWidth"
    android:verticalSpacing="@dimen/app_row_vertical_spacing"/>

bg_list_selector xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_list_item_focused" android:state_focused="true"/>
<!--<item android:drawable="@drawable/bg_list_item_focused" android:state_hovered="true"/>-->
<item android:drawable="@color/full_transparent" android:state_selected="true"/>
<item android:drawable="@color/full_transparent" android:state_pressed="true"/>
<item android:drawable="@color/full_transparent" android:state_window_focused="true"/>
<item android:drawable="@color/full_transparent" />

1 Ответ

0 голосов
/ 12 декабря 2019

Решение:

Примените селектор вместо 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...