Как изменить фоновое изображение кнопки при нажатии/фокусировке?
Я хочу изменить фоновое изображение кнопки при нажатии или сфокусировке.
Это мой код:
Button tiny = (Button)findViewById(R.id.tiny);
tiny.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Button tiny = (Button)findViewById(R.id.tiny);
tiny.setBackgroundResource(R.drawable.a9p_09_11_00754);
TextView txt = (TextView)findViewById(R.id.txt);
txt.setText("!---- On click ----!");
}
});
Правильно ли этот код? Вызывает ли она кнопку на своем мероприятии?
Ответы
Ответ 1
вы можете реализовать в xml файле для этого следующим образом:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/your_imagename_while_focused"/>
<item android:state_pressed="true" android:drawable="@drawable/your_imagename_while_pressed" />
<item android:drawable="@drawable/image_name_while_notpressed" /> //means normal
</selector>
теперь сохраните этот xml файл в папке с возможностью переноса и назовите его suppos abc.xml и установите его следующим образом
Button tiny = (Button)findViewById(R.id.tiny);
tiny.setBackgroundResource(R.drawable.abc);
Надеюсь, это поможет вам.:)
Ответ 2
Его очень легко реализовать. Для этого вам нужно создать один xml файл (файл-селектор) и поместить его в папку с возможностью копирования в res. После этого установите файл xml в фоновом режиме кнопки в вашем файле макета.
button_background_selector.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/your_hover_image" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/your_hover_image" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/your_hover_image"/>
<item android:drawable="@drawable/your_simple_image" />
</selector>
Теперь установите этот файл в фоновом режиме кнопки.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/grey_text"
android:background="@drawable/button_background_selector"/>
Ответ 3
Извините, что это неправильно.
Для изменения цвета фона/изображения на основе конкретного события (фокус, нажмите, нормальный) вам необходимо определить файл выбора кнопок и реализовать его как фон для кнопки.
Например: button_selector.xml(определите этот файл внутри доступной папки)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#000000" /> <!-- pressed -->
<item android:state_focused="true"
android:color="#000000" /> <!-- focused -->
<item android:color="#FFFFFF" /> <!-- default -->
</selector>
<!-- IF you want image instead of color then write
android:drawable="@drawable/your_image" inside the <item> tag -->
И примените его как:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawable="@drawable/button_selector.xml" />
Ответ 4
используйте этот код
создайте файл xml в имени палитра: button
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/buutton_pressed" />
<item
android:drawable="@drawable/button_image" />
</selector>
и в файле xml файла
android:background="@drawable/button"
Ответ 5
Чтобы изменить фон кнопки, мы можем выполнить 2 метода
-
В кнопке OnClick просто добавьте этот код:
public void onClick(View v) {
if(v == buttonName) {
buttonName.setBackgroundDrawable
(getResources().getDrawable(R.drawable.imageName_selected));
}
}
2. Создайте файл button_background.xml в папке с возможностью рисования. (с помощью xml)
res → drawable → button_background.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/tabs_selected" /> <!-- selected-->
<item android:state_pressed="true"
android:drawable="@drawable/tabs_selected" /> <!-- pressed-->
<item android:drawable="@drawable/tabs_selected"/>
</selector>
Теперь установите указанный файл в фоновом файле кнопки.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/button_background"/>
(or)
Button tiny = (Button)findViewById(R.id.tiny);
tiny.setBackgroundResource(R.drawable.abc);
Второй способ лучше установить фоновой кнопку fd
Ответ 6
Вам просто нужно установить фон и предоставить файл previous.xml в фоновом режиме кнопки в вашем файле макета.
<Button
android:id="@+id/button1"
android:background="@drawable/previous"
android:layout_width="200dp"
android:layout_height="126dp"
android:text="Hello" />
и done.Edit Ниже приведен файл previous.xml в каталоге с возможностью рисования
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/onclick" android:state_selected="true"></item>
<item android:drawable="@drawable/onclick" android:state_pressed="true"></item>
<item android:drawable="@drawable/normal"></item>
Ответ 7
Вы также можете создавать фигуры непосредственно внутри тега item
, на случай, если вы захотите добавить больше деталей в ваш вид, например так:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#81ba73" />
<corners android:radius="6dp" />
</shape>
<ripple android:color="#c62828"/>
</item>
<item android:state_enabled="false">
<shape>
<solid android:color="#788e73" />
<corners android:radius="6dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="#add8a3" />
<corners android:radius="6dp" />
</shape>
</item>
</selector>
Помните, что Android будет циклически перемещаться по элементам сверху вниз, поэтому вы должны поместить item
без условий внизу списка (чтобы он действовал как дефолтный/резервный).
Ответ 8
- Создайте файл в drawable play_pause.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/pause" />
<item android:state_selected="false"
android:drawable="@drawable/play" />
<!-- default -->
</selector>
- В XML файл добавить этот код ниже
<ImageView
android:id="@+id/iv_play"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_50sdp"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:background="@drawable/pause_button"
android:gravity="center"
android:scaleType="fitXY" />
- В Java файл добавить этот код ниже
iv_play = (ImageView) findViewById(R.id.iv_play);
iv_play.setSelected(false);
а также добавить это
iv_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
iv_play.setSelected(!iv_play.isSelected());
if (iv_play.isSelected()) {
((GifDrawable) gif_1.getDrawable()).start();
((GifDrawable) gif_2.getDrawable()).start();
} else {
iv_play.setSelected(false);
((GifDrawable) gif_1.getDrawable()).stop();
((GifDrawable) gif_2.getDrawable()).stop();
}
}
});