Как использовать рисование с градиентом в нажатом состоянии ListView? - PullRequest
2 голосов
/ 13 декабря 2011

В настоящее время я использую drawable для всех моих кнопок, который получает градиент над ним при нажатии кнопки. Я достигаю этого эффекта, используя различные нажатые состояния и layer-list.

Теперь я пытаюсь создать тот же эффект с ListView. Я могу показать другое изображение в качестве фона для объекта в списке, когда я нажимаю на него, но всякий раз, когда я пытаюсь добавить изображение с отдельным градиентом, оно отображается с цветом Android по умолчанию при щелчке объекта в ListView. Но он показывает мой пользовательский градиент для этого цвета по умолчанию.

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

Кнопка с наложением градиента, отлично работает

enter image description here

ListView с фоном для объекта, не работает при использовании этого изображения плюс наложение градиента

enter image description here

Рисунок, который я использую в качестве фонового изображения для ListView

enter image description here

В чем может быть причина того, что градиент работает на кнопке, а не на ListView? Как я уже сказал, использование совершенно другого изображения для нажатого состояния работает нормально, но использование фонового изображения и градиента - нет.

Код, используемый для нажатых состояний ListView

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

    <!-- Active tab -->
    <item android:drawable="@drawable/list_gradient" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
    <!-- Inactive tab -->
    <item android:drawable="@drawable/button_listpage_77px" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
    <!-- Pressed tab -->
    <item android:drawable="@drawable/list_gradient" android:state_pressed="true"/>
    <item android:drawable="@drawable/button_listpage_77px" />

</selector>

list_gradient.xml

    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#8858585a" android:endColor="#88a9a9a9"/>
        </shape>
    </item>
</layer-list>

Сегодня, проведя несколько часов, я все еще не смог решить мою проблему. Я знаю, что что-то упустил, но не могу понять, что. У кого-нибудь есть идея?

1 Ответ

2 голосов
/ 14 декабря 2011

Пройдя все заново и снова прочитав все подобные вопросы здесь на SO, я заметил, что нигде в моих файлах я не использовал 'android: listSelector`.

После установки следующего в моем ListView:

android:listSelector="#00000000", мой ListView вел себя так, как я хотел!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...