Изменение цвета при нажатии на кнопку со своим стилем

403
04 марта 2017, 02:51

Мне нужно при нажатии на кнопку, менять ее цвет, но при этом моя кнопка имеет закругленные углы, то есть уже имеется файл xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
   <corners android:radius="4dp" />
   <solid android:color="@color/colorTitle" />
</shape>

Чтобы поменять цвет кнопки при нажатии необходим еще 1 xml файл, так как там присутствует root tag <selector>, понятное дело, что можно сделать картинку с закругленными углами, но есть ли другой вариант? спасибо.

Answer 1

В файле стиля для кнопки Вы можете задать оформление виджета для различных состояний:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
                <corners android:radius="4dp"/>
                <solid android:color="@color/colorPrimary"/>
        </shape>
    </item>
    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
                <corners android:radius="4dp"/>
                <solid android:color="@color/colorAccent"/>
        </shape>
    </item>
</selector>

Здесь в pressed-состоянии кнопка будет иметь цвет @color/colorPrimary, а в default-состоянии – @color/colorAccent.

READ ALSO
JComboBox выравнивание текста

JComboBox выравнивание текста

есть кнопка-выпадающий список,в ней есть строки,что прописать чтобы текст был по центру,а не слева? нашел вот такое,но не знаю как применить

335
Не создается таблица в mapping Hibernate

Не создается таблица в mapping Hibernate

Почему-то не создается таблицаПрописал мэппинг, указал его в hibernate

320
JDBC, оптимизация кода

JDBC, оптимизация кода

Есть три метода, которые отличаются буквально в пару строчекМожно как-то избежать дублирования кода?

259