我有在個別項目中custom_row_views.xml定義列表視圖:如何動態更改我的列表視圖項目的textColor?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/showtitle"
android:textSize="17sp"
android:textStyle="bold"
android:textColor="#FFFF00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/showdate"
android:textSize="14sp"
android:textStyle="italic"
android:textColor="#CCCCCC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/showsummary"
android:textSize="17sp"
android:textStyle="normal"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
注意,三個textviews有不同的文本顏色。
現在,根據偏好設置,用戶應該改變文本視圖項目的文本顏色。
基本上,我看到兩種方式來做到這一點。一種是使用一個主題:
<resources>
<style name="ThemeBlack" parent="@android:style/Theme">
<item name="android:textColor">#FFFFFF</item>
<item name="android:typeface">sans</item>
<item name="android:background">#999999</item>
<item name="android:textSize">16sp</item>
</style>
<style name="ThemeRed" parent="@android:style/Theme">
<item name="android:textColor">#0000FF</item>
<item name="android:typeface">sans</item>
<item name="android:background">#c81111</item>
<item name="android:textSize">16sp</item>
</style>
</resources>
,然後在的onCreate()例如:
this.setTheme(R.style.ThemeRed);
這裏的問題是,它改變了所有的textviews'文本顏色,無論是在樣式定義。換句話說,它們不再是不同的。所以我的第一個具體問題是:
是否有可能以某種方式定義或應用樣式,以便迎合包含三個單獨顏色文本瀏覽的listview?
另一種方法是通過編程方式設置文本顏色,而不是使用樣式和主題。這是我的第一個方法,我認爲這很容易,但我已經掙扎了好幾個小時而無濟於事。
我試圖在ListActivity的OnCreate如下:
TextView tv = (TextView) findViewById(R.id.showsummary);
tv.setTextColor(Color.RED);
但是,使應用程序崩潰。
然後我嘗試這樣的:
TextView tv = null;
LayoutInflater inflater = this.getLayoutInflater();
View aView = inflater.inflate(R.layout.custom_row_view, null);
tv = (TextView) aView.findViewById(R.id.showsummary);
tv.setTextColor(Color.RED);
它不會崩潰,但它也不管用!
所以我的第二個問題是:
如何更改代碼我的列表視圖項目的文本顏色?
請注意,所有的listview項目應該有新的顏色;重要的是裏面的三個單獨的文字瀏覽這些項目應該單獨着色。換句話說,我並不是試圖在列表視圖中設置單個項目的顏色。
UPDATE: 我不知道這有什麼差別,但是這是列表視圖是如何popuplated:
Cursor showsCursor = mDbHelper.fetchSummaries(mCategory);
String[] from = new String[]{C2CDbAdapter.SUMMARY_TITLE, C2CDbAdapter.SUMMARY_DATE, C2CDbAdapter.SUMMARY_SUMMARY};
int[] to = new int[]{R.id.showtitle, R.id.showdate, R.id.showsummary};
SimpleCursorAdapter shows = new SimpleCursorAdapter(this, R.layout.custom_row_view, showsCursor, from, to);
setListAdapter(shows);
如何找到標籤的看法? – marlar
有一個方法可以讓你做到這一點:她的名字是:'findViewByTag();' – Houcine
你的意思是findViewWithTag()?我試過了,但是這種方法也沒用。但是,我找到了解決辦法,明天我會發布答案。現在是深夜,我需要睡覺:) – marlar