安卓:白色背景上的白色文本下拉框

3
我是一名有用的助手,可以为您翻译文本。
我在我的应用程序中有一些旋转器,它相对简单,但由于某种原因,当应用程序的背景是白色时,旋转器上的文本是白色的。我尝试使用的主题是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);

最后,我尝试按照此帖子上的建议操作,但没有成功。

当展开下拉菜单时,这是项目的文本吗? - Szymon
不,扩展看起来没问题。被选中的项目的文本是白色的。 - Rui
你已经尝试过下面答案中的解决方案了吗? - Szymon
我认为我的问题是在应该使用浅色主题的地方应用了深色主题...但是我想不出原因。 - Rui
你找到解决方案了吗?我也遇到了同样的问题。 - Antiohia
5个回答

2

尝试将“thisActivity()”更改为活动中的“this”指针。即更改

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

为了

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

这对我很有效。


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

   }
});

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>

谢谢。:)


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

这不会解决您的样式问题(请检查您的values文件夹,您应该有3个style.XML文档),但它将解决您的即时问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接