2013-06-05 62 views
3

是否有可能在选项菜单上创建,但在页面的底部。我正在与<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />合作。我知道默认情况下它位于顶部,但我认为它可以被置于底部。我只是不知道如何。 这里是我的代码创建选项菜单android在Android上的页面底部

option_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/scan" 
      android:icon="@android:drawable/ic_menu_search" 
      android:title="@string/connect"/> 
    <item android:id="@+id/discoverable" 
      android:icon="@android:drawable/ic_menu_mylocation" 
      android:title="@string/discoverable"/> 
</menu> 

main.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.option_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.scan: 
     // Launch the DeviceListActivity to see devices and do scan 
     Intent serverIntent = new Intent(this, DeviceListActivity.class); 
     startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE); 
     return true; 

    case R.id.discoverable: 
     // Ensure this device is discoverable by others 
     ensureDiscoverable(); 
     return true; 
    } 

    return false; 
} 

任何帮助将是巨大的。

+0

顺便说一句,我试过这个'android:showAsAction =“ifRoom”'但它似乎没有工作 – user1175889

+1

'ifRoom'并不意味着这一点,这意味着你的菜单项将只显示,如果有空间可以在'ActionBar'中找到。如果你想一直显示一个菜单项,用'always'替换它。 –

回答

8

看到您的目标是sdk 17,您可以使用SplitBar,它是一个可用选项,默认为ActionBarhttp://developer.android.com/guide/topics/ui/actionbar.html#SplitBar

你需要声明它在每一个需要的地方清单档案中的活动,例如:

<activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" 
     android:uiOptions="splitActionBarWhenNarrow" /> 

然后在你的onCreate功能,还可以调用自定义的布局,如果你仍然需要显示设备在屏幕的顶部附加按钮:

ActionBar actionBar = getActionBar(); 
    actionBar.setCustomView(R.layout.action_bar_custom); //load menu 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_SHOW_CUSTOM); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.show(); 

默认情况下,该图标上方正常显示将在底部显示,但你仍然可以使用自定义布局添加自定义动作按钮,如一个在这个例子。 setDisplayOptions功能描述为here

编辑:只有在较窄的屏幕,较大的设备或横向模式下,菜单才会显示在底部,将显示顶部的默认操作栏。