Единственное изображение для всех состояний кнопок для Android?
У меня есть изображение для моей кнопки. Чтобы использовать его, мне нужно иметь 1 дополнительное изображение для каждого состояния: 1. отключено 2. выбрано 3. нажато и т. Д.
в iOS все эти дополнительные состояния обрабатываются автоматически и отличаются от исходного изображения.
Возможно ли сделать это для Android?
5 ответов
Возможно ли сделать это для Android?
Нет, это НЕ. Вы должны иметь изображения всех государств с вами, чтобы определить селектор
Вы можете определить button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected state -->
<item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item>
<!-- Pressed state -->
<item android:drawable="@drawable/button_bg_pressed" android:state_pressed="true"></item>
<!-- Disabled state -->
<item android:drawable="@drawable/button_bg_disabled" android:state_enabled="false"></item>
<!-- Normal state -->
<item android:drawable="@drawable/button_bg_normal"></item>
</selector>
Затем просто назначьте этот селектор как background
кнопки
<Button
android:id="@+id/button1"
android:background="@drawable/button_selector"
android:layout_width="200dp"
android:layout_height="126dp"
android:text="Hello" />
См.: Кнопка выбора
Надеюсь, это поможет вам ツ
Вам придется использовать селектор для Android.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/focused"
android:state_focused="true" />
<item android:drawable="@drawable/normal" />
</selector>
android:background="@drawable/selector_button" />
просто посмотрите на эту ссылку.
Для выбранного и нажатого вы можете использовать XML-файл с корнем для фона кнопки, но для отключенного, я думаю, вам нужно обработать его в коде Java. Я не уверен в отключенном состоянии.
Этот ответ относится к тому, как вы можете обрабатывать состояния кнопок в Android. Вы можете создать файл макета кнопки отдельно, вставив его в res > layout
папка
Например:
если имя файла макета btn.xml
<?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/btn_pressed" />
<item android:drawable="@drawable/btn_normal"/>
</selector>
Вы можете установить BackgroundResource
из Button
yourButton.setBackgroundResource(R.layout.btn);
РЕДАКТИРОВАТЬ
Кроме того, вы можете обратиться по этой ссылке, которая более близка, чтобы ответить на ваш вопрос
Насколько я знаю, вам нужно обработать это состояние в новом файле ресурсов с именем cursor: например:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edittext_selector" android:layout_height="fill_parent"
android:layout_width="fill_parent">
<!-- Image display in background in select state -->
<item
android:state_pressed="true"
android:drawable="@drawable/edittextback1">
</item>
<!-- Image display in background in select state -->
<item
android:state_enabled="true"
android:state_focused="true"
android:drawable="@drawable/edittextback2">
</item>
<!-- Default state -->
<!--<item android:state_enabled="true"-->
<!--android:drawable="@drawable/your_ninepath_image">-->
<!--</item>-->
</selector>