ActionBar中的微调器不会出现

时间:2013-03-21 07:52:59

标签: android android-layout android-actionbar android-spinner

我已经实现了像here这样的微调器。现在我想将微调器放在ActionBar中(将微调器设置为CustomView到actionBar),但它不会出现在那里:(

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.planets_array, android.R.layout.simple_spinner_item);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

        spinner.setAdapter(adapter);

        actionBar.setCustomView(spinner);

这里是.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:baselineAligned="false"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/parkfragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <Spinner
        android:id="@+id/planets_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

请不要建议使用ActionBar DropDown List,我不能使用它,因为我已经在使用ActionBar Tabs了。 android不允许同时使用它们。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:6)

您的代码缺少此行:

actionBar.setDisplayShowCustomEnabled(true); 

请参阅ActionBar#setDisplayShowCustomEnabled(boolean showCustom)以供参考。


更新

为什么布局中的空FrameLayout占据了所有的宽度和高度?去掉它。并删除LinearLayout。只需将其用作布局:

<?xml version="1.0" encoding="utf-8"?>
<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" /> 

然后写下这样的东西,一切都很好:

actionBar.setCustomView(R.layout.your_layout_with_the_spinner);
actionBar.setDisplayShowCustomEnabled(true);

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);