2013-10-06 83 views
2

我在我的應用程序中有一些微調,它比較簡單,但由於某種原因,當應用程序的背景是白色時,微調上的文本是白色的。我試圖使用的主題是android:Theme.Light。Android:微調白色背景上的白色文本

在XML微調聲明如下所示:

 <Spinner 
      android:id="@+id/selection_spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:paddingBottom="4dp" 
      android:paddingLeft="16dp" 
      android:paddingRight="16dp" 
      android:paddingTop="4dp" 
      /> 

對於微調的聲明,我這樣做:

destinationsSpinnerAdapter = new ArrayAdapter<Destination>(getActivity(), android.R.layout.simple_spinner_item); 

最後,我試圖遵循this post但沒有成功的建議。

+0

當下拉展開時,它是項目的文本嗎? – Szymon

+0

不,擴展看起來不錯。所選項目的文本是否爲白色。 – Rui

+0

您是否已經嘗試過下面答案的解決方案? – Szymon

回答

0

如果你真的陷入困境,你可以創建一個自定義ArrayAdapter。下面的示例使用白色,但可以在SetColourWhite方法中更改它(並重命名方法;)

此類適配器應該可以在任何地方工作。我很難在操作欄中設計一個微調器 - 這有所幫助。

public class WhiteTextArrayAdapter<T> extends ArrayAdapter<T> { 

    public WhiteTextArrayAdapter(Context context, int textViewResourceId, T[] objects) { 
     super(context, textViewResourceId, objects); 
    } 

    public static WhiteTextArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId) { 
     CharSequence[] strings = context.getResources().getTextArray(textArrayResId); 
     return new WhiteTextArrayAdapter<CharSequence>(context, textViewResId, strings); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return SetColourWhite(super.getView(position, convertView, parent)); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     return SetColourWhite(super.getView(position, convertView, parent)); 
    } 

    private View SetColourWhite(View v) { 
     if (v instanceof TextView) ((TextView)v).setTextColor(Color.rgb(0xff, 0xff, 0xff)); // white 
     return v; 
    } 

} 
0

更改ArrayAdapter有Android.R.Simple_List_item_1

這不會解決你的問題的造型(檢查你的價值觀的文件夾,你應該有3個style.XML文件),但它會解決您的眼前問題。

1

試試這個:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int pos, 
     long id) { 
    // TODO Auto-generated method stub 
    ((TextView) parent.getChildAt(0)).setTextColor(Color.MAGENTA); 
    ((TextView) parent.getChildAt(0)).setTextSize(12); 
} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

    } 
}); 
1

嘗試改變 'thisActivity()' 在你的活動this指針。即改變

destinationsSpinnerAdapter = new ArrayAdapter<Destination>(getActivity(), android.R.layout.simple_spinner_item); 

destinationsSpinnerAdapter = new ArrayAdapter<Destination>(this, android.R.layout.simple_spinner_item); 

它爲我工作。

相關問題