2015-09-20 3 views
2

Я применил this question и реализовал круговой фон для TextView с использованием circle.xml (в res/drawable) и установил его как android:background="@drawable/circle" для TextView. Но мне нужно, мне нужно установить фоновый цвет динамически с помощью кода. Так же, как приложение леденец контактов, как показано нижеКак изменить цвет фона TextView динамически?

enter image description here

Как я могу добиться этого? Мне нужно TextView фон в круглой форме всегда, как показано на картинке

ответ

5

Вы можете изменить TextView цвет фона во многих отношениях, как:

textView.setBackgroundColor(Color.parseColor("#f44336")); 

или

textView.setBackgroundColor(Color.RED); 

или

textView.setBackgroundColor(Color.rgb(255, 0, 0)); 

или

textView.setBackgroundColor(getColor(R.color.red_color)); 

и многие другие способы тоже ...

Edit:

Если вы хотите изменить цвет фона TextView, который был определен в вашем вытяжке файл, сделать это следующим образом:

GradientDrawable:

GradientDrawable tvBackground = (GradientDrawable) textView.getBackground(); 
tvBackground.setColor(Color.parseColor("#f44336")); 

StateListDrawable:

StateListDrawable tvBackground = (StateListDrawable) textView.getBackground(); 
tvBackground.setColorFilter(Color.parseColor("#f44336"), PorterDuff.Mode.SRC_ATOP); 

Но если вы не хотите, чтобы установить цветовой фильтр, вы можете получить Drawable каждого государства в отдельности, следуя ответ в этом link.

+0

Да, все эти опции можно использовать для достижения желаемого эффекта. Я просто хотел добавить остальных. – larrytech

+0

Но это не дает мне круглую форму фона. он меняет только цвет фона. Фон круга исчезнет, ​​и новый цвет будет показан на квадратном фоне. – dev

+0

Вы не упомянули в своем вопросе, что хотите, чтобы он был круглым. –

2

Я думаю, вы хотели спросить, как создать случайный цвет для установки в качестве фона вашего текста. Ну, есть много способов. например;

textview.setBackgroundColor(Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255))); 
+0

Ya. но это не работает для генерации случайного цвета. 'new Color ((int) (Math.random() * 0x1000000))' этот оператор недействителен – dev

0

мой взгляд текст имеет форму круга определяется как

// circleshape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="schemas.android.com/apk/res/android"; android:shape="oval"> 
<solid android:color="@android:color/darker_gray" /> 
<corners android:bottomRightRadius="8dp" android:bottomLeftRadius="8dp" android:topRightRadius="8dp" android:topLeftRadius="8dp"/> 
</shape> 

Я применил его к TextView с помощью background="@drawable/circleshape"

Это делает TextView циркуляр. Теперь используйте код ниже:

GradientDrawable tvBackground = (GradientDrawable) viewHolder.userInitialsText.getBackground(); 

//myHexColorCode is like "0xff00ff" 
tvBackground.setColor(Color.parseColor(myHexColorCode)); 
Смежные вопросы