android 如何以编程方式更改TextView颜色

djp7away  于 2022-11-20  发布在  Android
关注(0)|答案(5)|浏览(297)

我被这个看似简单的任务难住了。
我只想将textview的颜色和linearlayout的背景颜色更改为colors.xml资源文件中设置的颜色。

我试过了

myTextView.SetTextColor(this.Resources.GetColor(Resource.Color.myColor));

但这是不赞成的。
"然后我试着“

myTextView.SetTextColor(ContextCompat.GetColor(context, Resource.Color.myColor));

但是ContextCompat.GetColor()返回的是int而不是Android.Graphics.Color,因此不会编译。

然后我尝试将颜色设置为style的一部分:

<style name="myColorStyle">
    <item name="android:textColor">
      @color/myColor
    </item>
...
  </style>

并首先使用

myTextView.SetTextAppearance(this, Resource.Style.myColorStyle);

但也不赞成这样做
"我试过了"

myTextView.SetTextAppearance(Resource.Style.myColorStyle);

但这会抛出一个异常:
Java.Lang.NoSuchMethodError:没有非静态方法“Landroid/widget/TextView;. set文本外观(I)V”
这个简单的任务是如何完成的?
我正在使用Xamarin和Visual StudioC#编写代码。

2fjabf4q

2fjabf4q1#

在2017年,这是通过资源ID获取颜色的正确方法,尽管看起来非常复杂:

new Android.Graphics.Color (ContextCompat.GetColor (this, Resource.Color.bb_orange));

依据:https://forums.xamarin.com/discussion/54193/res-getcolor-is-deprecated

wnavrhmk

wnavrhmk2#

不需要这么复杂,只需使用

myTextView.setTextColor(Color.parseColor("#000"));

myTextView.setTextColor(Color.parseColor("red"));

myTextView.setTextColor(getResources().getColor(R.color.YOURCOLOR));
qxgroojn

qxgroojn3#

如果你想跳过xml,这很简单。

myTextView.SetTextColor(Android.Graphics.Color.Red);

也可用于设置文本视图的背景颜色。

myTextView.SetBackgroundColor(Android.Graphics.Color.White);
ohfgkhjo

ohfgkhjo4#

更新

我第一次没有注意到它,但我看到你已经尝试了这个解决方案。你使用什么版本?在我的它是不是不赞成。

textView.SetTextColor(Resources.GetColor(Resource.Color.red));

在资源/值/颜色. xml中

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <color name="red">#ff0000</color>
  <color name="blue">#0000ff</color>
</resources>

Xamarin Resource.Color

mqkwyuun

mqkwyuun5#

myTextView.TextColor =颜色.解析(“红色”);

相关问题