操作栏 - 操作项的定位

时间:2012-08-28 01:15:20

标签: android android-layout android-actionbar

我正在为一个通过wifi /蓝牙远程控制另一个设备的应用程序做一个android 4+布局。我正在尝试使用操作栏,因为它可以使用。

在这个应用程序的情况下,我希望有一个选择器,为远程设备选择基本的系统操作模式。在它的右侧,我想要一个“编辑设置”按钮。因此用户可以选择一种操作模式,也可以编辑所选的操作模式。我想要选择器旁边的编辑按钮,因为将它们分组是有意义的。这两个动作表达了人们通常在应用程序中使用的大部分功能。

我正在使用Android活动的默认示例代码,因为向导在我的项目中插入了“new> other> android activity”,它有一个已经设置并正常工作的选择器。

问题是,选择器放在操作栏的最左侧,所有其他操作项从右侧开始并向左移动。我似乎无法立即将“编辑”操作项的位置锁定在插入的选择器的右侧。

菜单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属性,但是虽然它没有导致错误,但它也没有做任何我能看到的事情。

screenshot

如果有人知道如何将我的编辑按钮附加到选择器的右边,我会很高兴听到如何完成它。

2 个答案:

答案 0 :(得分:2)

系统控制动作项的位置,以提供所有应用程序的通用外观;换句话说,没有办法实现这一点(除非别人不知道)。或许,您可以扩展操作栏,或以某种方式重写它以允许重新定位操作项,但这超出了我的技能。

答案 1 :(得分:0)

从oncreateoptionsmenu中的两个菜单xml文件中膨胀。文件最后膨胀将位于最右侧。

     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
     inflater.inflate(R.menu.menu_one, menu);
     inflater.inflate(R.menu.menu_two, menu);

menu_two的项目将位于最右侧。