Пользовательская кнопка: изменение стиля при нажатии - PullRequest
6 голосов
/ 10 сентября 2010

Я создал кнопку с тенью, используя стиль:

<style name="test">
  <item name="android:shadowColor">#FFFFFF</item>
  <item name="android:shadowRadius">1</item>
  <item name="android:shadowDx">1</item>
  <item name="android:shadowDy">1</item>
</style>

Это применяет белую тень к тексту кнопки в ее нормальном состоянии. Мне просто интересно, если кто-нибудь знает, есть ли способ удалить эту тень, когда кнопка находится в нажатом состоянии. Другими словами, есть ли способ применить другой стиль, когда кнопка находится в другом (нажатом) состоянии?

Заранее спасибо!

редактировать

bold.xml:

<resources>
    <style name="bold_text">
        <item name="android:textStyle">bold</item>
    </style>
</resources>

button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/test_pressed"
              style="@style/bold_text"
          android:state_pressed="true"/>
    <item android:drawable="@drawable/test_focused"
          android:state_focused="true"/>
    <item android:drawable="@drawable/test_normal"/>
</selector>

мой макет:

<Button
        ...
        android:background="@drawable/button"/>

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010
0 голосов
/ 16 октября 2010

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

За исключением случаев button2.xml. Я заставил это работать, удалив все кроме спецификаций "drawable" и "state_ *". У меня там был "textColor" - похоже, что XML, который проходит другие проверки (как и style = ".." выше), молча делает недействительным селектор. Хорошее место для продления валидации!

Schwiz имеет право ... для текста используйте отдельный селектор, определенный в подкаталоге "color" вашего каталога ресурсов: см. ColorStateList

...