【发布时间】:2016-07-03 17:27:18
【问题描述】:
我被这个看似简单的任务难住了。
我只想将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#。
【问题讨论】:
-
你有必要从资源中获取颜色吗?
-
你试过
myTextView.setTextColor(Color.parseColor("#000"));或myTextView.setTextColor(Color.parseColor("red")); -
textView.setTextColor(getResources().getColor(R.color.errorColor));
-
我不确定 1-1 Xamarin 如何镜像 Android API。但是
resources.getColor(int)仅在 API23 上被弃用,以支持可以使用Resource.Theme的版本。这意味着两件事:1)您可以忽略弃用; 2)您可以使用其他方法为null:resource.getColor(Resource.color.myColor, null); -
使用新的Android.Graphics.Color(ContextCompat.GetColor(this, Resource.Color.red));不要忘记 constructor new Android.Graphics.Color ()
标签: c# android visual-studio xamarin