Как изменить цвет текстового представления из адаптера, фон textView определен в drawable - PullRequest
0 голосов
/ 03 сентября 2018

Это мой текстовый вид в layout.xml

<TextView
    android:id="@+id/tvCharacter"
    android:layout_width="0dp"
    android:layout_height="@dimen/_43sdp"
    android:layout_gravity="center"
    android:layout_weight="1.8"
    android:paddingBottom="@dimen/_1sdp"
    android:paddingTop="@dimen/_1sdp"
    android:background="@drawable/rounded_textview"
    android:text="H"
    android:gravity="center"
    android:textSize="@dimen/_28ssp"
    android:textColor="#fff"
    android:visibility="gone"
    />

Это фон, для представления текста для реализации формы круга

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle" />

и это файл circle.xml, а вот цвет фона textView, который я хочу изменить

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">

<solid android:color="#9FE554" />

<stroke
    android:width="0dp"
    android:color="#000" />

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Я сделал это с помощью следующего кода и все время использовал случайный цвет

Random r = new Random();
        int red=r.nextInt(255 - 0 + 1)+0;
        int green=r.nextInt(255 - 0 + 1)+0;
        int blue=r.nextInt(255 - 0 + 1)+0;
        int alpha = 200;

        GradientDrawable draw = new GradientDrawable();
        draw.setShape(GradientDrawable.OVAL);
        draw.setColor(Color.argb(alpha,red,green,blue));
        viewHolder.tvCharacter.setBackground(draw);
0 голосов
/ 03 сентября 2018

Вы можете получить объект drawable, затем использовать метод setColorFilter, чтобы изменить его цвет и, наконец, установить новый фон для вашего TextView:

Drawable drawable = itemView.getContext().getDrawable(R.drawable.circle);
drawable.setColorFilter(ContextCompat.getColor(itemView.getContext(), R.color.colorPrimary),
                            PorterDuff.Mode.SRC_ATOP);
tvCharacter.setBackground(drawable);

Я не думаю, что в этом случае вам нужен @ drawable / rounded_textview. Я бы установил фон TextView на @ drawable / circle.

Примечание: я использую itemView.getContext(), потому что я реализовал это в конструкторе ViewHolder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...