2016-03-04 59 views
0

我有一個定製的微調(簡單的文本視圖),因爲我想有改變所選項目的背景顏色簡單的解決辦法:的是Android 4.4.2 - 背景顏色不設置微調

spinner_categories.xml

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/text1" 
     android:layout_width="150sp" 
     android:layout_height="40sp" 
     android:textSize="16sp" 
     android:gravity="center" /> 

這些項目是通過定製適配器和基於所選擇的項目,其中的顏色被存儲爲sharedprefs背景顏色變化充氣

main_acitivity

spinner = (Spinner) findViewById(R.id.spinner); 
    // The spinner items are populated from strings.xml, array elements 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.categories, R.layout.spinner_categories); 
    spinner.setAdapter(adapter); 


    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     // it sets the background color of the textview based on the selected item 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE); 
      sharedpref_colorCategory = getSharedPreferences(COLORS_CATEGORY, Context.MODE_PRIVATE); 
      parent.getChildAt(0).setBackgroundColor(sharedpref_colorCategory.getInt(spinner.getAdapter().getItem(position).toString(), 0)); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
     } 
    }); 
} 

的文字是白色的宗旨,全力打造與背景的對比度。現在,當我在我的三星S5(Android 5.0 - API 21)或模擬器上安裝它時,背景顏色顯示正確,而一個華爲Y360(Android 4.4.2 - API 19)的背景顏色是總是白色的,所以我看不到選定的項目。 的的build.gradle已配置如下:

的build.gradle

minSdkVersion 16 
    targetSdkVersion 16 

是否有人知道我怎麼能解決這個問題?

謝謝!

朱塞佩

答案: 我應該使用setBackgroundResource代替,並在colors.xml文件

+0

從Spinner中選擇項目之後,是否想要更改該特定項目的顏色,或者想要調整Spinner內部整個文本的顏色 –

+0

我想根據所選內容更改背景顏色微調項... –

回答

0

你需要得到的顏色,而不是資源傳遞ID的定義顏色,就是這Color.WHITE只返回資源而不是顏色資源的ID,所以改變這一行:

((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE); 

這個

(TextView) parent.getChildAt(0)).setTextColor(getResources().getColor(android.R.color.white)); 
+0

這不是關於文本顏色,而是背景顏色......我讀了更多關於,似乎我應該使用setBackgroundResource來代替並定義colors.xml文件中的顏色:S –

+0

是的,是相同的邏輯,只需將顏色添加到您的colors.xml並遵循此方法即可。 –

+0

要設置背景顏色是一樣的: view.setBackgroundColor(getResources()。getColor(colorresid)); –

0

您需要設置適配器中TextView的屬性。爲此,您必須創建自定義適配器並處理適配器的getCustomView方法中的TextView屬性。請參閱this示例。

+0

微調控制器是根據strings.xml中定義的項目進行充氣的,所以用這種方式我不必在佈局中改變任何東西......因此,在選擇項目時,運行時會確定背景顏色 –

+0

創建後您對arrayadapter所做的任何更改都不會生效。因此,您需要一個自定義適配器 – SoroushA