Единственное изображение для всех состояний кнопок для 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>
Другие вопросы по тегам