Изменить внешний вид кнопки, когда фокус или нажмите? - PullRequest
2 голосов
/ 23 декабря 2009

Я пытаюсь сделать кнопку с фоновым изображением.

<Button android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_marginLeft="5px" 
 android:layout_gravity="center_vertical" 
 android:id="@+id/button1" 
 android:background="@drawable/imagename">
</Button>

Я хочу, чтобы все было по-другому (тень, яркость и т. Д.), Когда пользователь нажимает или касается кнопки.

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

Как это сделать?

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

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

вы можете использовать селектор XML и указать его в качестве фона кнопки. Чтобы понять, как это работает, отметьте this out.

0 голосов
/ 25 июня 2018

Для этого вам нужно создать пользовательский чертеж с различным состоянием кнопки. Сначала добрались до res-> drawable и щелкните правой кнопкой мыши и добавьте новый drawable файл. Назовите его как button_default. Добавьте следующий код в этот файл

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_default_click" android:state_pressed="true" />

    <item android:drawable="@drawable/button_default_click" android:state_focused="true" />

    <item android:drawable="@drawable/button_default_click" android:state_active="true" />
    <item android:drawable="@drawable/button_default_normal" />
</selector>

В этом файле мы определили необходимость рисования при различном состоянии кнопки. Теперь получили папку drawable и создайте новый drawable с именем button_default_click и добавьте к нему следующий код.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="50dp" />
    <gradient
        android:angle="90"
        android:endColor="@color/white"
        android:startColor="@color/gray_light"
        android:type="linear" />
    <stroke
        android:width="1dp"
        android:color="@color/gray_dark" />
</shape>

Вы можете изменить эти цветовые свойства так, как вам нравится. Теперь создайте еще один объект рисования с именем button_default_normal. Это рисование, при использовании которого нет никаких триггеров. Добавьте к этому следующий код.

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="50dp" />
    <stroke
        android:width="1dp"
        android:color="@color/gray_light_300" />
    <gradient
        android:angle="90"
        android:endColor="@color/white"
        android:startColor="@color/gray_light"
        android:type="linear" />
</shape>

Нет, мы должны назначить созданный селектор для рисования кнопке.

<Button android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_marginLeft="5px" 
 android:layout_gravity="center_vertical" 
 android:id="@+id/button1" 
 android:background="@drawable/button_default.xml">
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...