В чем разница между getColor () и getColorStateList () в Android - PullRequest
0 голосов
/ 13 июня 2019

Я использую метод getColor() для выбора цвета из ресурсов.Но я обнаружил, что есть еще один метод под названием getColorStateList().Какой из них прост в использовании и в чем разница между ними?

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

позволяет предположить, что вы хотите setBackgroundColor для представления, например linearLayout . если вы хотите, чтобы его цвет фона был постоянным , вы можете использовать getColor () , чтобы установить определенный цвет . но если вы хотите, чтобы его цвет изменялся в различных состояниях и событиях , таких как нажатое состояние или не нажатое состояние , вам нужно установить идентификатор ресурса для xml файл, содержащий код для этих задач по изменению цвета.

вот что я говорю в коде:

linearLayout.setBackgroundColor(getResources().getColor(R.color.red);

строка кода выше устанавливает постоянный цвет linearLayout на красный.

linearLayout.setBackgroundTintList(getResources().getColorStateList(R.drawable.layout_background));

и эта строка кода, приведенная выше, установит красный цвет фона при нажатии макета и белый при отсутствии нажатия.

layout_background.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
       android:color="@color/red" />
    <item android:state_pressed="false"
       android:color="@color/white" />
</selector>
0 голосов
/ 13 июня 2019

getColor () Возвращает целое число цвета, связанное с конкретным идентификатором ресурса

getColorStateList () ColorStateLists создаются из файлов ресурсов XML, определенных в «цвете»каталог подкаталога каталога ресурсов приложения.XML-файл содержит один элемент «селектор» с несколькими элементами «элемент» внутри.Например:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true"
           android:color="@color/sample_focused" />
   <item android:state_pressed="true"
           android:state_enabled="false"
           android:color="@color/sample_disabled_pressed" />
   <item android:state_enabled="false"
           android:color="@color/sample_disabled_not_pressed" />
   <item android:color="@color/sample_default" />
 </selector>
...