как использовать извлекаемый ресурс в фоновом режиме

#android #drawable

#Android #извлекаемый

Вопрос:

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

Что мне делать?

button_enable.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="#FF0000FF"/>
    <item android:state_enabled="false" android:color="#440000FF"/>
</selector>
  

activity_main.xml

 <EditText
    android:id="@ id/et1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="input email"/>
<Button
    android:id="@ id/btn1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="OK"
    android:textColor="#FFFFFF"
    android:background="@drawable/button_enable"/>
  

MainActivity.java

 et1.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }
    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        if(et1.length()>0)
            btn1.setEnabled(true);
        else
            btn1.setEnabled(false);
    }
    @Override
    public void afterTextChanged(Editable editable) {
     }
});
  

Комментарии:

1. Используйте app:backgroundTint вместо android:background

Ответ №1:

Вместо использования android:color="#FF0000FF" внутри элемента, который вам нужно использовать android:drawable

и вам нужно создать рисованный объект со сплошным фоном, к которому вы стремитесь.

Так что это было бы что-то вроде

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

и фоновый рисованный что-то вроде:

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<solid android:color="#FF4081"/>
</shape>
  

Комментарии:

1. Это работает, спасибо. Почему нельзя android:color записать непосредственно в него? Если я использую <item android:state_focused="true" android:color="#F60"/> для редактирования текста, цвет шрифта может быть изменен. И в EditText я использую android:textColor="@drawable/edittext_focused"

2. Нет причин использовать этот вид рисования только для изменения цвета.

3. Потому что Android: color делает именно это. Изменяет цвет текста, а не для рисования 🙂 Если вы хотите изменить весь фон виджета, вам нужен рисунок, заполненный сплошным цветом или другой формой.

Ответ №2:

Вы используете неправильное состояние. Эти состояния применяются для коммутаторов. Чтобы увидеть цветовые эффекты на вашей кнопке, попробуйте использовать этот.

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#FF0000FF"/>
    <item android:state_pressed="false" android:color="#440000FF"/>
</selector>
  

Комментарии:

1. Я пытаюсь использовать его, но он все еще не может работать. Я хочу, чтобы при редактировании текста не было текста, кнопка не работает, а фон # 440000FF.