我对这个看似简单的任务感到难过。
我想简单地将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; .setTextAppearance(I)V”
这个简单的任务是如何实现的?
我使用Xamarin 和Visual Studio在 C#中编码。
答案 0 :(得分:10)
2017年,这是通过资源ID获取颜色的正确方法,即使它看起来非常复杂:
new Android.Graphics.Color (ContextCompat.GetColor (this, Resource.Color.bb_orange));
每: https://forums.xamarin.com/discussion/54193/res-getcolor-is-deprecated
答案 1 :(得分:3)
不需要如此复杂,只需使用
myTextView.setTextColor(Color.parseColor("#000"));
或强>
myTextView.setTextColor(Color.parseColor("red"));
或强>
myTextView.setTextColor(getResources().getColor(R.color.YOURCOLOR));
答案 2 :(得分:2)
<强>更新强>
我首先没有注意到它,但我看到你已经尝试过这个解决方案。你用的是什么版本?在我看来它没有被弃用。
textView.SetTextColor(Resources.GetColor(Resource.Color.red));
在Resources / values / colors.xml
中<?xml version="1.0" encoding="utf-8" ?>
<resources>
<color name="red">#ff0000</color>
<color name="blue">#0000ff</color>
</resources>
答案 3 :(得分:1)
如果你想跳过xml,那很简单。
myTextView.SetTextColor(Android.Graphics.Color.Red);
也适用于设置文本视图的背景颜色。
myTextView.SetBackgroundColor(Android.Graphics.Color.White);