2012-08-28 135 views
4

我正在为通过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

系统控制操作项目的位置,以提供跨所有应用程序的通用外观和感觉;换句话说,没有办法做到这一点(除非别人知道)。也许你可以扩展Action Bar,或者以某种方式重写它以允许重新定位动作项目,但这超出了我的技能。

+0

是啊...文档不是很令人鼓舞,但我正在为某种方式工作。可悲的是,我使用的xml属性实际上列在了developer.android.com的ActionBar.LayoutParams参考中,但在使用它时似乎没有任何效果。 (或者我错用了......) –

+0

感谢您的回答 - 似乎偶尔会出现一些与该位置相关的应用(例如,Gmail应用会显示当前标签的未读号码),但您是对的 - 没有标准android的布局方式,我可以找到它。我实际上最终通过删除编辑按钮来解决问题。看到这个应用程序正在触摸屏上运行..现在我想了一下,如果需要,允许直接用触摸编辑每个视图是有意义的。 –

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的项目将在最右边。

+0

好主意,但不是,这是行不通的。 – Tima