Какое рисование по умолчанию для нажатия элемента списка - PullRequest
11 голосов
/ 18 августа 2010

Когда пользователь нажимает на элемент ListView (android: state_pressed = "true"), он мигает желтым оттенком (или вы можете нажать и удерживать).

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

Существует Android-документ о скинах кнопок, который ссылается на # ffff0000, но при этом появляется красный.

Кто-нибудь знает, что это такое и как на него ссылаться?

Ответы [ 4 ]

36 голосов
/ 02 декабря 2010

Системные ресурсы по умолчанию можно найти в <android-sdk>/platforms/android-<version>/data/res. В частности, селектор списка определен в drawable/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>

Рисунок, который отображается на прессе, list_selector_background_transition, представляет собой не один цвет, а два изображения с 9 участками, желтое и белое, с анимированным переходом между ними.

<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:drawable/list_selector_background_pressed"  />
    <item android:drawable="@android:drawable/list_selector_background_longpress"  />
</transition>
2 голосов
/ 18 августа 2010

То, о чем вы говорите, это встроенный селектор ОС Android.

Создайте свою выделенную область с помощью xml-файла в папке drawable, например:

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
  <item android:state_pressed="true" android:color="#YOURCOLOR" /> 
  <item android:color="#FE896F" /> 
</selector>

Затемв вашем XML-файле есть ваш ListView.

android:textColor="@drawable/highlight" //For text to appear like YOURCOLOR
//or if you wish the background
android:background="@drawable/highlight" //For the background to appear like YOURCOLOR

Я надеюсь, что это так и скажите мне, сработало ли это или нет!

1 голос
/ 18 августа 2010

Цвет определяется как #AARRGGBB, где AA представляет значение альфа (прозрачности), RR - количество красного, GG - количество зеленого и BB - количество синего Таким образом, # ffff0000 является сплошным и красным. Если вы хотите оранжевый, вы хотите добавить немного зеленого, то есть: # ffffA500. Google для значений цвета RGB, чтобы увидеть страницы цветов с их значениями RGB.

0 голосов
/ 18 августа 2010

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

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#ffb300"
        android:centerColor="#ffc800"
        android:endColor="#ffb300"
        android:angle="270"/>
</shape>
...