android текстовый просмотр:динамическая настройка цвета фона не работает
Вопрос
Программная настройка цвета фона Android TextView
похоже, это не работает.Я... я что-то упускаю!
TextView et = new TextView(activity);
et.setText("350");
et.setBackgroundColor(R.color.white);
У меня также есть этот файл (colors.xml) в моей папке res / values
<resources>
<color name="white">#ffffffff</color>
<color name="black">#ff000000</color>
</resources>
[ПРАВИТЬ]:Кроме того, установка цвета текста приводит к исчезновению TextView.
TextView c1 = new TextView(activity);
c1.setTextColor(R.color.solid_red);
c1.setText("My Text");
Решение
Использование et.setBackgroundResource(R.color.white);
Другие советы
Попробуй это:
TextView c1 = new TextView(activity);
c1.setTextColor(getResources().getColor(R.color.solid_red));
c1.setText("My Text");
Я согласен, что цвет и ресурс имеют один и тот же тип, но я также трачу несколько часов, чтобы найти это решение.
Чтобы установить красный цвет:
textView.setBackgroundColor(0xfff00000);
Или
<color name="solid_red">#fff00000</color>
textView.setBackgroundResource(R.color.solid_red);
У меня была похожая проблема, когда я создавал цифровой цвет без учета ведущего альфа-канала.т. е. mytext.setTextColor(0xFF0000)
(думая, что это будет красный ).Хотя это красный цвет, он также на 100% прозрачен, как it = 0x00FF0000;
Правильное значение непрозрачности на 100% равно 0xFFFF0000
или mytext.setTextcolor(0xFFFF0000)
.
Просто эта 1 строка кода программно изменила фон
tv.setBackgroundColor(Color.parseColor("#808080"));
Ну, у меня была ситуация, когда веб-сервис вернул цвет в шестнадцатеричном формате, например "#CC2233", и я хотел поместить этот цвет в TextView с помощью setBackgroundColor(), поэтому я использовал класс android Color для получения значения int шестнадцатеричной строки и передал его упомянутой функции.Все сработало.Это пример:
String myHexColor = "#CC2233";
TextView myView = (TextView) findViewById(R.id.myTextView);
myView.setBackGroundColor(Color.pasrsehexString(myHexColor));
P.S.опубликовал этот ответ, потому что другие решения у меня не сработали.Я надеюсь, что это кому-нибудь поможет:)
Вот шаги, чтобы сделать это правильно:
Прежде всего, объявите экземпляр TextView в вашем MainActivity.java следующим образом:
TextView mTextView;
Установите некоторый текст ДИНАМИЧЕСКИ (если хотите) следующим образом:
mTextView.setText("some_text");
Теперь, чтобы задать цвет фона, вам нужно определить свой собственный цвет в файле res->values->colors.xml следующим образом:
<resources> <color name="my_color">#000000</color> </resources>
Теперь вы можете использовать цвет "my_color" в вашем java-файле для динамической установки фона следующим образом:
mTextView.setBackgroundResource(R.color.my_color);
tv.setTextColor(getResources().getColor(R.color.solid_red));
вот в небольших деталях,
если вы находитесь в активном состоянии, используйте это
textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor));
если вы находитесь во фрагменте, используйте приведенный ниже код
textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor));
если вы используете адаптер recyclerview, используйте приведенный ниже код
textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor));
// use holder.textview if you are in onBindviewholder
//here context is passed from fragment
Color.parseHexColor("17ee27")
у меня это не сработало, вместо этого Color.parseColor("17ee27")
сработало отлично.
два способа сделать это:
1.создайте цвет в colors.xml файле, подобном:
<resources>
<color name="white">#ffffff</color>
</resources>
и используйте его в классе java activity как:
et.setBackgroundResource(R.color.white);
2.
et.setBackgroundColor(getResources().getColor(R.color.white));
or
et.setBackgroundColor(Color.parseColor("#ffffff"));
Если вы хотите поддерживать все версии, сделайте это:
myTextView.setBackgroundColor(ContextCompat.getColor(это,R.color.mycolor));
Использование выступа
ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, your array list);
вы можете использовать android:textColor= "
любой цвет текста, который вы хотите присвоить" в xml-файле, где объявлен ваш текстовый вид.