android текстовый просмотр:динамическая настройка цвета фона не работает

StackOverflow https://stackoverflow.com/questions/1466788

  •  13-09-2019
  •  | 
  •  

Вопрос

Программная настройка цвета фона 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.опубликовал этот ответ, потому что другие решения у меня не сработали.Я надеюсь, что это кому-нибудь поможет:)

Вот шаги, чтобы сделать это правильно:

  1. Прежде всего, объявите экземпляр TextView в вашем MainActivity.java следующим образом:

    TextView mTextView;
    
  2. Установите некоторый текст ДИНАМИЧЕСКИ (если хотите) следующим образом:

    mTextView.setText("some_text");
    
  3. Теперь, чтобы задать цвет фона, вам нужно определить свой собственный цвет в файле res->values->colors.xml следующим образом:

    <resources>
        <color name="my_color">#000000</color>
    </resources>
    
  4. Теперь вы можете использовать цвет "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-файле, где объявлен ваш текстовый вид.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top