Android:为微调器应用相同的DropDownViewResource,但操作栏和活动的结果不同

时间:2014-08-21 17:45:36

标签: android android-actionbar android-spinner android-styles

我有一个问题就是将微调器放在操作栏中。

我在操作栏和活动内容中为旋转器应用相同的DropDownViewResource,但结果不同。

(Action Bar微调器) enter image description here

(活动微调) enter image description here

以下是代码:

(活动)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // apply custom layout for action bar
        final ActionBar actionBar = getActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setCustomView(R.layout.layout_actionbar_stylist_collections);

        setContentView(R.layout.activity_stylist_collections);

        mCollectionsSpinner = (Spinner) findViewById(R.id.collections_spinner);
        setSpinner(mCollectionsSpinner);

        mContentSpinner = (Spinner) findViewById(R.id.content_spinner);
        setSpinner(mContentSpinner);
    }
    private void setSpinner(Spinner spinner) {
        String[] strList = new String[]{"1", "2", "3", "4", "5"};
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, R.layout.layout_spinner_item, strList);
        dataAdapter.setDropDownViewResource(R.layout.layout_spinner_dropdown_item);
        spinner.setAdapter(dataAdapter);
    }

(操作栏布局:layout_actionbar_stylist_collections)

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/actionbar_bar"
    android:orientation="horizontal" >

    <Spinner
        android:id="@+id/collections_spinner"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:background="@android:color/transparent"/>

</RelativeLayout>

(活动布局:activity_stylist_collections.xml)

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:paddingLeft="10dp"
        android:paddingTop="10dp" >

        <Spinner
            android:id="@+id/content_spinner"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/transparent" />
    </RelativeLayout>
</LinearLayout>

(Spinner DropDownViewResource:layout_spinner_dropdown_item.xml)

<?xml version="1.0" encoding="UTF-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee"
    android:singleLine="true"
    android:textColor="#0AA0A0" />

但输出是不同的,这很奇怪。 背景颜色不同。

任何人都知道为什么? 是否有可能由于动作栏风格? 如何使操作栏中的微调器与活动内容中的微调器相同?

提前致谢。 埃里克

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案。 是的,它来自动作栏样式。

原始操作栏样式如下:

<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarStyle">@style/CustomActionBar</item>
</style>

将“AppTheme”父母从“AppBaseTheme”改为“@ style / Theme.Holo.Light”后,问题解决了。

谢谢大家。 埃里克