操作栏 - 操作项的位置定位

4
我正在尝试为一款通过wifi/bluetooth远程控制另一设备的应用设计Android 4+布局,并试图最大限度地使用操作栏。在这个应用程序的情况下,我想要一个选择器来选择远程设备的基本系统操作模式。在它的右边,我想有一个“编辑设置”按钮,这样用户可以选择一个操作模式或编辑所选的操作模式。我希望将编辑按钮直接放在选择器旁边,因为将它们分组是有道理的。这两个操作展示了人们通常在应用中使用的大部分功能。我正在使用Android活动的默认示例代码,该代码由向导“新 > 其他 > Android活动”插入我的项目中,它已经设置好并工作正常的选择器。 问题是,选择器被放置在操作栏的最左边,而所有其他操作项从右侧开始移动到左侧。我似乎无法锁定立即在插入的选择器右侧的“编辑”操作项的位置。 XML菜单中的项如下:
<item android:id="@+id/edit_configuration"
    android:title="Edit"
    android:orderInCategory="2"
    android:layout_gravity="left"
    android:showAsAction="always" />
<item android:id="@+id/menu_settings"
    android:title="@string/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="never" />

选择器需要在活动类的onCreate方法中使用代码插入。
    // Set up the action bar.
    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    // Set up the dropdown list navigation in the action bar.
    actionBar.setListNavigationCallbacks(
            // Specify a SpinnerAdapter to populate the dropdown list.
            new ArrayAdapter(
                    actionBar.getThemedContext(),
                    android.R.layout.simple_list_item_1,
                    android.R.id.text1,
                    new String[]{
                            getString(R.string.title_section1),
                            getString(R.string.title_section2),
                            getString(R.string.title_section3),
                    }),
            this);

我尝试了菜单XML中的标准layoutGravity属性,但是虽然它不会导致错误,但我看不到它起到任何作用。
如果有人知道我如何将编辑按钮附加在选择器的右侧,我会很高兴听到如何做到这一点。
2个回答

2
系统控制操作项的位置,以在所有应用程序中提供统一的外观和感觉;换句话说,除非有其他人知道,否则没有办法实现这一点。您可能可以扩展操作栏,或以某种方式重写它以允许重新定位操作项,但那超出了我的能力范围。

是的...文档并不鼓舞人心,但我还在寻找一种能够以某种方式工作的方法。可悲的是,我使用的xml属性实际上在developer.android.com的ActionBar.LayoutParams参考中列出...但似乎在我使用它时没有任何效果。(或者我使用它的方式不对...) - Julian Higginson
感谢您的回答 - 有时候确实会有一些应用程序在那个位置显示某些内容(例如Gmail应用程序显示当前标签的未读数量),但您是对的 - 据我所知,没有找到标准的Android布局方法来实现这一点。实际上,我最终通过移除编辑按钮来解决了这个问题。考虑到这个应用程序是在触摸屏上运行的,现在我再想一想,如果需要的话,直接通过触摸来编辑每个视图是有道理的。 - Julian Higginson

0
在onCreateOptionsMenu中从两个菜单XML文件中进行膨胀。最后膨胀的文件将位于最右侧位置。
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.menu_one, menu);
     inflater.inflate(R.menu.menu_two, menu);

菜单二的项目将位于最右侧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接