Я хочу изменить цвет нескольких элементов фона TextView с помощью ColorFilters. Я пробовал несколько способов сделать это. Двое из них сильфон:ColorFilter не работает для фона TextView
TextView tvLeftTop, tvLeftBottom;
tvLeftTop = (TextView) findViewById(R.id.textview_LeftTop);
tvLeftBottom = (TextView) findViewById(R.id.textview_LeftBottom);
float[] cmData = new float[]{
1, 0, 0, 1, 0,
0, 1, 0, 0, 0,
1, 1, 1, 1, 0,
0, 0, 0, 1, 0};
ColorMatrix cm = new ColorMatrix(cmData);
ColorFilter filter1 = new ColorMatrixColorFilter(cm);
ColorFilter filter2 = new PorterDuffColorFilter(0x20003300, PorterDuff.Mode.LIGHTEN);
tvLeftBottom.getBackground().setColorFilter(filter1);
tvLeftTop.getBackground().setColorFilter(filter2);
Оба TextView содержатся в GridLayout. Вот соответствующая часть XML-файла деятельности:
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:columnCount="4"
android:rowCount="4"
android:layout_above="@+id/seekBar">
<TextView
android:id="@+id/textview_LeftTop"
android:layout_columnWeight="1"
android:layout_rowWeight="2"
android:layout_rowSpan="2"
android:layout_row="0"
android:layout_column="0"
android:layout_marginBottom="3dp"
android:layout_marginRight="3dp"
android:layout_gravity="fill"
android:background="#6A77B7"
android:text="Title1" />
<TextView
android:id="@+id/textview_LeftBottom"
android:layout_width="0dp"
android:layout_height="70dp"
android:layout_columnWeight="1"
android:layout_rowWeight="2"
android:layout_rowSpan="2"
android:layout_row="2"
android:layout_column="0"
android:layout_marginTop="3dp"
android:layout_marginRight="3dp"
android:layout_gravity="fill"
android:background="#D64F97"
android:text="Title2" />
</GridLayout>
Но нет никакого эффекта для обоих взглядов целевого текста (их цвета не изменяются). Что я делаю неправильно?
P.S. Значения цветов являются тестами, поэтому есть целые строки (не значения из .xml-файла). Думаю, теперь это не имеет значения.
Дополнительную информацию можно приобрести. Я пытаюсь изменить цвет TextView с помощью SeekBar. И теперь я заметил интересную вещь. Я добавил 'tvLeftTop.setText (" "+ i);' после 'tvLeftTop.getBackground(). SetColorFilter (filter2);' и цвет изменен ('i' - значение позиции строки поиска). Кажется, что обновление TextView требуется. Но я не знаю, как это сделать правильно. – Yulia