我的应用程序中有一些微调器,相对简单,但由于某些原因,当应用程序的背景为白色时,微调器上的文本为白色。我试图使用的主题是android:Theme.Light。
XML中的Spinner声明如下所示:
<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 :(得分:2)
尝试更改此活动()&#39;到了这个&#39;你活动中的指针。即改变
destinationsSpinnerAdapter = new ArrayAdapter<Destination>(getActivity(), android.R.layout.simple_spinner_item);
到
destinationsSpinnerAdapter = new ArrayAdapter<Destination>(this, android.R.layout.simple_spinner_item);
它对我有用。
答案 1 :(得分: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
}
});
答案 2 :(得分: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;
}
}
答案 3 :(得分:0)
将ArrayAdapter更改为Android.R.Simple_List_item_1
这不会解决您的样式问题(检查您的值文件夹,您应该有3个style.XML文档),但它将解决您当前的问题。
答案 4 :(得分:0)
您可以为Spinner使用以下样式。在style.xml中使用:
<style name="SpinnerThemeLight" >
<item name="android:colorBackground">@color/white</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="android:textColorPrimaryDisableOnly">@color/black</item>
</style>
如果您已经创建了一个样式,请仅将此项添加到其中:
<item name="android:textColorPrimaryDisableOnly">@color/black</item>
感谢。 :)