2014-02-12 5 views
0

У меня есть следующее определение стиля и селектора android, примененное к ListView, однако я не вижу эффекта градиента серого, применяемого при нажатии на него. При щелчке сразу отображается синий градиент.Выбираемые чертежи

Как автор этого примера написал:

Мы хотим применить это к нашему селектору списка. Вместо того, чтобы всегда показывать тот же градиент, мы хотим, чтобы градиент изменил свой начальный цвет от до светло-голубого при каждом нажатии элемента списка. Поскольку у нас теперь есть два разных селектора списков - один для состояния по умолчанию для нажатого состояния - нам нужно держать их в отдельных файлах.

Может кто-нибудь объяснить, как это должно отображаться правильно? Или я чего-то не хватает?
Более общий, что именно я должен ожидать увидеть на экране? Что-то вроде плавного перехода от градиента серого к синему градиенту в элементе списка?

Обновление: вот как автор «видит» его, но когда я нажимаю на элемент, он выглядит только как на правой стороне изображения. Могу ли я предположить, что автор хочет, чтобы все элементы в списке были серыми по умолчанию? Или это состояние не относится к элементам просмотра списка?

list_item_default.xml -> СЕРЫЙ GRADIENT

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:angle="0" 
     android:endColor="#FFFF" 
     android:startColor="#AFFF" /> 
    <stroke 
     android:width="1dip" 
     android:color="#CCC" /> 
    <corners android:radius="5px" /> 
</shape> 

list_item_pressed.xml -> СИНИЙ GRADIENT

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:angle="0" 
     android:endColor="#FFFF" 
     android:startColor="#AA66CCFF" /> 
    <stroke 
     android:width="1dip" 
     android:color="#CCC" /> 
    <corners android:radius="5px" /> 
</shape> 

list_selector.xml

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

styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyMoviesTheme" parent="@android:style/Theme.Black"> 
    <item name="android:listViewStyle">@style/MyMoviesListView</item> 
    <item name="android:windowBackground">@drawable/film_bg</item> 
    </style> 

    <style name="MyMoviesTextAppearance" parent="@android:style/TextAppearance"> 
    <!--<item name="android:textStyle">bold</item>--> 
    </style> 

    <style name="MyMoviesListView" parent="@android:Widget.ListView"> 
    <item name="android:background">@color/list_background</item> 
    <item name="android:listSelector">@drawable/list_selector</item> 
    <item name="android:cacheColorHint">@android:color/transparent</item> 
    <item name="android:fastScrollEnabled">true</item> 
    <item name="android:footerDividersEnabled">false</item> 
    </style> 

</resources> 

ответ

0

Попробуйте добавить фразу:

<item 
    android:state_enabled="true" 
    android:drawable="@drawable/list_item_default"/> 
    <item 
    android:state_enabled="true" 
    android:drawable="@drawable/list_item_pressed" 
    android:state_pressed="true"/> 
+0

К сожалению, это не помогло. Я не совсем уверен, что я должен увидеть на экране, когда я нажимаю элемент списка. В настоящее время все элементы по умолчанию черные, когда я нажимаю на один из них, он становится синим градиентом. Что я должен ожидать увидеть? – ashur

+0

Я стараюсь, и 4.11 может работать хорошо. Я получаю эффект градиента. Теперь я тестирую его на 2.3.7.4.0. Ваш код может работать хорошо. –

+0

Ну, для меня, я не вижу серого эффекта: P, я не уверен, что правильно понял селекторов тогда, когда я должен увидеть серый градиент и когда синий? Когда я нажимаю элемент в списке, он становится синим, поэтому, когда он должен быть серым? По умолчанию ни один из элементов в списке не выбран, и все темные, как на изображении, которое я дал. – ashur