Вот 2 решения для изменения фона EditText, который я исследовал ранее, надеюсь, он поможет вам:
★ Выпуск :
Когда для фона установлено значение EditText, это выглядит так ужасно
★ Analysys :
EditText использовал изображение в виде фона. Они использовали селектор для изменения фонового изображения на основе текущего состояния EditText (Enable / Focus / Press, Default)
★ Существует два решения этой проблемы, каждое из которых имеет свои преимущества и недостатки:
★ Solution1 :
Создайте свой собственный EditText (следуйте этому решению, мы свободно меняем представление EditText.
▲ Преимущество :
Ваш свободно отображаемый вид EditText соответствует вашей цели, не нужно создавать изображение Ninepath в качестве текущей реализации Android EditText. (Ваш провайдер должен IF в вашем EditText, чтобы плавно менять фон в зависимости от состояния EditText (Enable / Focus ....)
Используется повторно и более индивидуально, если вы хотите изменить цвет фона или добавить больше цвета
▼ 1024 * Неудобство *:
Приложите много усилий, чтобы создать и протестировать свой собственный EditText.
(Я выбираю решение 2, поэтому у меня нет демонстрационной реализации решения 1, если кто-то последует этому решению, не стесняйтесь поделиться с нами своим демонстрационным кодом)
★ Solution2 :
Используется селектор в качестве Android-инструмента
callСоздать вызов XML-файла edittext_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edittext_selector">
<!-- Image display in background in select state -->
<item
android:state_pressed="true"
android:drawable="@drawable/your_ninepath_image">
</item>
<!-- Image display in background in select state -->
<item
android:state_enabled="true"
android:state_focused="true"
android:drawable="@drawable/your_ninepath_image">
</item>
<!-- Default state -->
<item android:state_enabled="true"
android:drawable="@drawable/your_ninepath_image">
</item>
</selector>
nНа селекторе EditText xml set:
<EditText
...
android:background="@layout/**edittext_selector**"
...
</EditText>
★ Примечание
● В этом демонстрационном коде я удалил некоторое поведение состояния просмотра, обратитесь к устройству Android для подробного поведения (фокус / расфокусировка, включение / отключение, нажмите, выбрано ...)
● Позаботьтесь о порядке пункта в вашем селекторе. Разница порядка элемента в XML-файле селектора будет иметь разный фон.
▲ Преимущество :
Просто, просто создайте селектор и установите селектор на фон, если вам нужно больше цвета, просто установите больше селектора, чем установите по коду.
▼ Неудобство :
Приложите усилия, чтобы создать изображение с девятью путями для селектора, если вы хотите изменить цвет или добавить больше цвета, вы должны создать больше изображения и селектора. Так что он менее надежен, чем Solution1
Это мое расследование в отношении фонового изображения, поэтому оно может быть правильным или неправильным, если у вас есть лучшее решение или объяснение, не стесняйтесь поделиться с нами.
Я реализовал следующее решение 2, и оно сработало.