【问题标题】:Replace the action bar's title with a spinner (drop down)用微调器替换操作栏的标题(下拉)
【发布时间】:2015-04-23 20:41:12
【问题描述】:

我正在尝试在操作栏默认标题出现的相同位置显示微调器。 我遵循了类似SO case here 的指示, 所以我设法消除了标题,但微调器的位置仍然没有对齐到左边,正如你从这个屏幕截图中看到的那样

以下是我的应用程序的主要定义,用于重现此案例:

AndroidMenifest.xml:

<application
        android:label="app"            
        android:icon="@drawable/ic_launcher"
        android:theme="@style/Theme.AppCompat" > 
...
    <activity
        android:name="gm.activities.ViewAllActivity">            
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="gm.activities.MainActivity" />
    </activity>

menu_view_all.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="gm.activities.ViewAllActivity">
    <item android:id="@+id/spinner"
        android:title="will be replaced anyway"
        app:showAsAction="ifRoom"
        app:actionViewClass="android.widget.Spinner"
        android:layout_gravity="left"
        android:gravity="left"/>
    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

和相关活动:

public class ViewAllActivity extends ActionBarActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_all_activity);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
...
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_view_all, menu);
        MenuItem item = menu.findItem(R.id.spinner);
        Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
        spinner.setGravity(Gravity.LEFT);
        SpinnerAdapter adapter;
        spinner.setAdapter(ArrayAdapter.createFromResource(this,
                R.array.all_table_views, android.R.layout.simple_spinner_item));
        spinner.setOnItemSelectedListener(this); // set the listener, to perform actions based on item selection
        return true;
     }

那么 - 我可以将微调器对齐到操作栏的左侧吗?如何? 在操作栏中使用微调器并像我一样通过 menu.xml 文件进行设置是否正确?

【问题讨论】:

    标签: android android-actionbar alignment android-ui android-actionbar-compat


    【解决方案1】:

    菜单中的操作Views 总是向右对齐。如果您希望Spinner 左对齐,最好使用setCustomView() 方法将其设置为ActionBar 上的自定义View。默认情况下,自定义View 将与左侧对齐,如果标题被隐藏,它将取代标题。请注意,这需要您在ActionBar 上致电setDisplayShowCustomEnabled(true)

    【讨论】:

    • 我还想提一下,在View 上调用setGravity() 会影响View 的内容,而不是它的布局位置。仅供参考。
    • 谢谢!这是我根据您的建议实施的解决方案:stackoverflow.com/questions/15542059/…
    • @GyRo 酷!很高兴听到你让它工作。我只想提一下,如果您将来决定使用Toolbar 作为您的支持ActionBar,该方法仍然有效。只要确保用它打电话给setSupportActionBar()。干杯!
    • 嗨,我挑战你回答我的以下问题并获得相应的奖励,谢谢。 stackoverflow.com/questions/29125266/…
    • @GyRo,实施的解决方案在哪里?我在链接的帖子中没有找到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多