Как закруглить углы кнопки и менять цвет при нажатии в android

486
04 июня 2017, 18:51

У меня есть button.xml и мне нужно в нем закруглить кнопку и одновременно с этим менять цвета при нажатии. Вот код:

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/button_pressed_color" android:state_pressed="true" />
    <item android:drawable="@color/menu_color" android:state_focused="true" />
    <item android:drawable="@color/button_color" />
    <item>
        <shape>
            <corners
                android:bottomLeftRadius="10dp"
                android:bottomRightRadius="10dp"
                android:topLeftRadius="10dp"
                android:topRightRadius="10dp" />
        </shape>
    </item>
</selector>

Однако оно не работает. Если убрать закругление или обработку нажатия, то все нормально, но вместе нет. Как реализовать эту функцию?

Answer 1

Всё делается довольно просто, и я посоветую поступить именно так, ибо так намного удобнее:

  • Укажите стиль для своей кнопки:

  • Создайте свой стиль в ../res/values/styles.xml:

  • Теперь далее, ../res/drawable/button_main.xml:

  • И уже в этих файлах проводите настройку, как будет выглядеть кнопка в обычном состоянии, при нажатии и так далее, например button_main_shape.xml:

Здесь уже указываете все необходимые параметры. Таким образом, вы можете сделать так, чтобы при нажатии и в обычном состоянии кнопки выглядели абсолютно по-разному.

Могу посоветовать этот и этот сервисы, с помощью которых удобно и наглядно можно создать нужный вам shape.

READ ALSO
Как отменить Exeption в equals?

Как отменить Exeption в equals?

Как отменить Exeption в equals?

309
Как передать транзакцию

Как передать транзакцию

Как я мог бы передать транзакцию в другой поток и продолжить работать с этой транзакциейНужно в hibernate залочить строки в бд, и уже в другом...

362
System.exit(0) гарантирует завершение всех потоков?

System.exit(0) гарантирует завершение всех потоков?

Systemexit(0) гарантирует завершение всех потоков? В GUI программе использую множество Thread-ов, если выйти с программы с помощью System

265
Вечная жизнь программы или как сделать не закрывающуюся программу Java SE

Вечная жизнь программы или как сделать не закрывающуюся программу Java SE

Подскажите пожалуйстанужно сделать что бы программа после запуска ожидала команд и после того как команда отработала она продолжала их ждать

428