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);

最后,我尝试按照这篇文章的建议进行操作,但没有成功。

4

5 回答 5

2

尝试将 'thisActivity()' 更改为 Activity 中的 'this' 指针。即改变

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

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

它对我有用。

于 2015-03-15T07:15:23.737 回答
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

   }
});
于 2013-11-06T21:05:47.110 回答
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;
    }

}
于 2013-10-06T03:56:05.780 回答
0

将您的 ArrayAdapter 更改为具有 Android.R.Simple_List_item_1

这不会解决您的样式问题(检查您的值文件夹,您应该有 3 个 style.XML 文档),但它会解决您的直接问题。

于 2013-10-08T03:11:50.050 回答
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>

谢谢。:)

于 2018-05-03T18:07:22.553 回答