Как указать, что элемент списка находится в фокусе? - PullRequest
0 голосов
/ 11 марта 2011

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true">


    <TextView android:id="@+id/list_item"
        android:layout_gravity="center_vertical"
        android:layout_width="0dip"
        android:layout_weight="1.0"
        android:textSize="20sp"
        android:textColor="#FFFFFFFF"
        android:layout_height="wrap_content" 
        android:padding="20dp"/>


</LinearLayout>

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

И, при дальнейшей проверке, я думаю, что это может произойти только при добавлении контекстного меню - я опробую его и отредактирую с результатами.

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Способ сделать это - добавить контекстное меню. Это приведет к желаемому эффекту.

1 голос
/ 11 марта 2011

Возможно, вы захотите взглянуть на статью о Сенсорный режим .

0 голосов
/ 11 марта 2011

Вы можете попробовать установить селектор, который можно нарисовать для фона строки списка.

android:background="@drawable/listview_bg"

Drawable должно быть что-то вроде этого:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/list_bg_blue"/>
<item android:state_pressed="true" android:state_enabled="false" android:drawable="@drawable/list_bg_blue"/>
<item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/list_bg_blue"/>    
<item android:state_enabled="false" android:drawable="@drawable/list_bg_blue"/>    
<item android:drawable="@drawable/list_bg_grey"/>

Кроме того, попробуйте RelativeLayout вместо LinearLayout.

...