[英]How to change TextView Color Programmatically
我被這個看似簡單的任務難住了。
我想簡單地將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# 中編碼。
在2017年,這是通過資源ID獲取顏色的正確方法,即使它看起來非常復雜:
new Android.Graphics.Color (ContextCompat.GetColor (this, Resource.Color.bb_orange));
per: https : //forums.xamarin.com/discussion/54193/res-getcolor-is-deprecated
不需要如此復雜,只需使用
myTextView.setTextColor(Color.parseColor("#000"));
要么
myTextView.setTextColor(Color.parseColor("red"));
要么
myTextView.setTextColor(getResources().getColor(R.color.YOURCOLOR));
UPDATE
我首先沒有注意到它,但我看到你已經嘗試過這個解決方案。 你用的是什么版本? 在我看來它沒有被棄用。
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>
它很簡單,如果你想跳過xml。
myTextView.SetTextColor(Android.Graphics.Color.Red);
也適用於設置文本視圖的背景顏色。
myTextView.SetBackgroundColor(Android.Graphics.Color.White);
myTextView.TextColor = Color.Parse("紅色");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.