0

我有一个使用标签进行导航的应用程序,其中一个标签上有一个微调器。However, when the spinner is selected and the actual select window comes up, all the text is white on a white background. 我试过设计布局,但我没有做任何改变字体的颜色。

主班

public class RealmsOfWickedry extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab);

        TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);

        TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
        TabSpec secondTabSpec = tabHost.newTabSpec("tid1");

        firstTabSpec.setIndicator("Home").setContent(new Intent(this,FirstTab.class));
        secondTabSpec.setIndicator("Catalog").setContent(new Intent(this,SecondTab.class));

        tabHost.addTab(firstTabSpec);
        tabHost.addTab(secondTabSpec);
    }

    public static View makeSpinner(Context context) {
        View v = LayoutInflater.from(context).inflate(R.layout.spinner, null);
        Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_dropdown_item);
        adapter.add("Item 1");
        adapter.add("Item 2");
        adapter.add("Item 3");
        adapter.add("Item 4");
        spinner.setAdapter(adapter);
        return v;
    }
}

带微调器的班级

public class SecondTab extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /* Second Tab Content */
        TextView textView = new TextView(this);
        textView.setText("Choose a Category");
        setContentView(textView);
        setContentView(RealmsOfWickedry.makeSpinner(getParent())); 
    }
}

选项卡.xml

<?xml version="1.0" encoding="utf-8"?>

<TabHost android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost">
    <LinearLayout android:id="@+id/LinearLayout01"
        android:orientation="vertical" android:layout_height="fill_parent"
        android:layout_width="fill_parent">
        <TabWidget android:id="@android:id/tabs"
            android:layout_height="wrap_content" android:layout_width="fill_parent"></TabWidget>
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_height="fill_parent" android:layout_width="fill_parent"></FrameLayout>
    </LinearLayout>

</TabHost>

微调器.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/cat_prompt"
        android:theme="@style/DropdownStyle"
    />
</LinearLayout>

主题.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="OverallStyle" parent="@android:Theme.Light">
        <item name="android:windowBackground">@drawable/bg</item>
        <item name="android:textColor">@color/white</item>
    </style>
    <style name="WelcomeStyle" parent="@android:Theme.Light">
        <item name="android:typeface">monospace</item>
        <item name="android:gravity">center</item>
    </style>
    <style name="CustomStyle" parent="@android:Theme.Light">
        <item name="android:typeface">monospace</item>
        <item name="android:gravity">top</item>
    </style>
    <style name="DropdownStyle" parent="@android:Theme.Light">
        <item name="android:textColor">@color/red</item>
    </style>
</resources>

谁能帮我解决这个问题?

4

1 回答 1

0

看起来您正试图覆盖系统主题以显示不同的颜色,这是正确的路径。您的微调器 xml 包含对android:theme我以前从未见过的引用,并且它似乎不是此小部件 API 的一部分。要让您的 DropdownStyle 工作,首先,将其添加为您的OverallStyle 样式的一部分,项目名称为@android:attr/spinnerDropDownItemStyle. 其次,将 DropdownStyle 的父级更改为@android:Widget.DropDownItem.Spinner. 我假设OverallStyle 已经应用于清单中的活动或应用程序。这将更改所有 Spinner 下拉项的样式。

要仅应用于此视图的下拉项,只需执行上述第二步,然后style="@style/OverallStyle"在其布局中添加到微调器。

附加信息:

<style name="DropdownStyle" parent="@android:Widget.DropDownItem.Spinner">
    <item name="android:textColor">@color/red</item>
</style>
<style name="OverallStyle" parent="@android:Theme.Light">
    <item name="android:windowBackground">@drawable/bg</item>
    <item name="@android:attr/spinnerDropDownItemStyle">@style/DropdownStyle</item>
    <item name="android:textColor">@color/white</item>
</style>

-或者-

主题.xml

<style name="DropdownStyle" parent="@android:Widget.DropDownItem.Spinner">
    <item name="android:textColor">@color/red</item>
</style>

微调器.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/cat_prompt"
        style="@style/DropdownStyle"
    />
</LinearLayout>
于 2011-08-24T00:07:50.443 回答