2013-08-13 2 views
0

Я добавил простой ListSelector в ListView. Проблема заключается в том, что отображается только ListSelector, после того, как ListView немного прокручивается.Android ListView отображает ListSelector только после прокрутки

Как я могу сделать ListSelector незамеченным, чтобы выбрать?

ListView

<ListView 
    android:id="@+id/contentListView" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:layout_above="@id/buttonEntwerten" 
    android:scrollingCache="false" 
    android:cacheColorHint="#00000000" 

    android:listSelector="@drawable/list_selector" 
/> 

@ вытяжке/list_selector

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/list_selector__gradient_bg_hover" /> 
</selector> 

ответ

-1

вы можете проверить, как андроид настроил, и изменить его соответствующим образом (имя файла "list_selector_background.xml"):

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_window_focused="false" android:drawable="@color/transparent" /> 

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> 
    <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" /> 
    <item android:state_focused="true" android:state_enabled="false"        android:drawable="@drawable/list_selector_background_disabled" /> 
    <item android:state_focused="true"        android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> 
    <item android:state_focused="false"        android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" /> 
    <item android:state_focused="true"                android:drawable="@drawable/list_selector_background_focus" /> 

</selector> 

Короче говоря, вам просто нужно обработать состояние state_pressed. остальные - хорошие состояния для обработки тоже.

проблема в вашем коде заключается в том, что он не имеет состояний.

+0

Я не добавлял никаких состояний для случая простоты, так что BG появляется в любом состоянии. Это сработало. Проблема в том, что BG не срабатывает НЕМЕДЛЕННО, но только после того, как я немного прокрутил ListView. – Skip

+0

так зачем использовать селекторы? они используются для состояний. если вы хотите статический фон, вы можете установить его для каждого элемента в спискеView и установить фон listView (и независимо от того, что его контейнер, даже если это само окно), прозрачно ... я думаю, вам стоит посмотреть лекцию «мир listView»: http://www.google.com/events/io/2010/sessions/world-of-listview-android.html –

+0

Я буду использовать разные состояния. Я полагаю, что моя проблема не зависит от состояний, поэтому я взял их, чтобы представить простой пример. – Skip

Смежные вопросы