2010-12-05 138 views
22

我遇到了Droid X手機的問題,用戶說這個字體顏色在微調器中變成了白色,除非用戶突出顯示這些項目,否則它將不可見。沒有其他手機似乎有這個問題。我試圖強制字體變黑,看看是否有幫助。我怎樣才能做到這一點?如何更改Spinner字體顏色?

下面是我目前如何填充微調框。 Droid X似乎破損了simple_spinner_item

String spin_arry[] = new String[str_vec.size()]; 
str_vec.copyInto(spin_arry); 
ArrayAdapter adapter = 
    new ArrayAdapter(this,android.R.layout.simple_spinner_item, spin_arry); 

回答

45

我打算使用來自Android SDK的Spinner項目樣本作爲下一個代碼示例。


代碼

首先,你需要創建你自定義的適配器,將攔截的意見創作下拉列表:

static class CustomArrayAdapter<T> extends ArrayAdapter<T> 
{ 
    public CustomArrayAdapter(Context ctx, T [] objects) 
    { 
     super(ctx, android.R.layout.simple_spinner_item, objects); 
    } 

    //other constructors 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) 
    { 
     View view = super.getView(position, convertView, parent); 

     //we know that simple_spinner_item has android.R.id.text1 TextView:   

     /* if(isDroidX) {*/ 
      TextView text = (TextView)view.findViewById(android.R.id.text1); 
      text.setTextColor(Color.RED);//choose your color :)   
     /*}*/ 

     return view; 

    } 
} 

然後你在你的代碼中創建適配器像這樣:

String [] spin_arry = getResources().getStringArray(R.array.Planets);   
this.mAdapter = new CustomArrayAdapter<CharSequence>(this, spin_arry); 

說明:

因爲CustomArrayAdapter知道,我們使用Android內置的佈局資源,它也知道,文本將被放置在TextView id爲android.R.id.text1。這就是爲什麼它可以攔截在下拉列表中創建視圖並將文本顏色更改爲任何需要的顏色。


截圖:

enter image description here

+0

更好的解決方案,修改此代碼:http://stackoverflow.com/questions/10409871/how-to-increase-spinner-item-font-size – Gerry 2015-04-12 17:51:48

-1

讓自己的佈局xml文件,並給予機器人:文字顏色=「#000」的黑色文本

2

爲了增加sasad的答覆,作出這樣的文件,你可以找到副本您的Android文件夾,在您的項目中,更改該文件中TextView的文本顏色,並在初始化適配器而不是Android時使用該佈局。

7

簡潔明快......

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
     long id) { 
    ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE); 
    ((TextView) parent.getChildAt(0)).setTextSize(5); 
    } 

    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}; 
+0

這將導致的TextView到在旋轉設備時爲空。 – tolgap 2012-11-14 13:46:05

7

R.layout.simplespinneritem:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

ID爲android:id="@android:id/text1",設置字體和背景的顏色。

ArrayAdapter adapter = 
    new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry); 
+1

如果使用entries屬性從加載微調項目,你如何使用它? – TheRealChx101 2015-09-30 16:14:28

3
public class ee extends Activity{ 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ww); 
addListenerOnSpinnerItemSelection(); 

} 
public void addListenerOnSpinnerItemSelection(){ 

    ArrayList<String> array = new ArrayList<String>(); 
    array.add("item0"); 
    Spinner spinner1; 
    ArrayAdapter<String> mAdapter; 
    spinner1= (Spinner) findViewById(R.id.spinner2); 
    spinner1= new ArrayAdapter<String>(this, R.layout.spinner_item, array); 
    spinner1.setAdapter(mAdapter); 

} 
} 

和XML RES /佈局添加新的XML文件:類型佈局,微調

(在spinner_item。XML)

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" 
    android:singleLine="true" 
    android:textColor="#00f0ff" /> 
-1

這是更合適的方式傢伙,

首先發現在你的系統中的 「simple_spinner_item.xml」 文件, 按照下面的路徑, C:\用戶[用戶名] \應用程序數據\本地\ Android的\ SDK \平臺[機器人-23] \ DATA \資源\佈局

現在複製 「simple_spinner_item.xml」 文件的內容

二創建custom_spinner.xm在項目資源l文件\佈局文件夾

並粘貼到最近創建的文件

這裏複製的內容是樣本:

資源\佈局\ custom_spinner.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:textAlignment="inherit" 
    android:ellipsize="marquee" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:singleLine="true" 
    android:textColor="@color/dark_gray" 
    style="?android:attr/spinnerItemStyle" 
    android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android"/> 

這裏是設置的適配器代碼:

Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea); 

ddlArea.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_spinner, areaList)); 

where areaList is List

感謝, 埃賈茲Waquif

+0

這不是問題的答案 – 2016-11-19 06:38:18