菜单未使用AppCompat库显示在ActionBar中

时间:2014-04-25 06:00:42

标签: android xml android-menu android-appcompat

我在教会应用程序中使用AppCompat库,但我的菜单图标未显示在ActionBar中。

public class MainActivity extends ActionBarActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // toggle nav drawer on selecting action bar app icon/title
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        // Handle action bar actions click
        switch (item.getItemId()) {
        case R.id.action_settings:
            return true;

         case R.id.menu_item_share:
            shareApp(); 
            return true;  

        case R.id.menu_item_about:
            Intent intentAbout = new Intent(MainActivity.this, AboutActivity.class);
            startActivity(intentAbout);
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }

我写了正确的xml,因为我读过它应该是:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:yourapp="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

     <item 
      android:id="@+id/menu_item_share" 
      android:title="@string/menu_share" 
      android:icon="@drawable/ic_action_share" 
      android:showAsAction="ifRoom" /> 

    <item 
      android:id="@+id/menu_item_about" 
      android:title="@string/menu_about" 
      android:icon="@drawable/ic_action_about" 
      android:showAsAction="ifRoom" />

注意:按设备上的MENU按钮,它们会出现。

3 个答案:

答案 0 :(得分:6)

更改此

android:showAsAction="never"

yourapp:showAsAction="never"

也可以使用yourapp:showAsAction="always"

您也可以使用&#34;始终&#34;声明项目始终显示为操作按钮。但是,您不应强制项目以此方式显示在操作栏中。

注意:如果操作栏的操作栏空间不足,则菜单项会显示在溢出处,只显示标题

与其他人相似。

引用文档

  

使用支持定义的任何XML属性时,这是必需的   库,因为Android中不存在这些属性   旧设备上的框架。所以你必须使用自己的命名空间作为   支持库定义的所有属性的前缀。

你已经拥有

xmlns:yourapp="http://schemas.android.com/apk/res-auto"

欲了解更多信息,请阅读

http://developer.android.com/guide/topics/ui/actionbar.html

答案 1 :(得分:0)

android:showAsAction="never"更改为android:showAsAction="always"

答案 2 :(得分:0)

如果您使用AppCompat操作栏处理3.0以下的版本,则需要在menu.xml中的menu标签中使用此代码行:

xmlns:custom="http://schemas.android.com/apk/res-auto"

菜单布局中的菜单标记应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res-auto">

  <!-- ITEMS HERE -->

</menu>

然后也改变:

android:showAsAction="never"

有:

android:showAsAction="always"

或:

android:showAsAction="ifRoom"

还建议在子菜单中包含所有项目,因此操作栏上只有一个菜单按钮,然后当您按下它时,您会在下拉菜单中看到其他菜单选项。

您可以通过以下方式实现此目的:

 <item
    android:id="@+id/action_submenu"
    android:showAsAction="always"
    android:title=""
    android:icon="@drawable/your_icon" >

    <menu >

      <item />

      <item />

      ........

    </menu>

 </item>

希望它有所帮助!