Android工具栏和菜单问题

时间:2016-01-26 11:00:34

标签: android xml

当我使用toolbar.inflateMenu()方法将菜单设置为工具栏时,菜单项将放在错误的位置。

正确的效果:

enter image description here

但是当应用程序在我的手机中运行时,它就变成了:

enter image description here

这是代码: menu xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/add"
    android:icon="@mipmap/ic_add"
    android:orderInCategory="80"
    android:title="@string/fitting_other"
    app:showAsAction="ifRoom"/>

<item
    android:id="@+id/search"
    android:icon="@drawable/ic_action_action_search"
    android:orderInCategory="90"
    android:title="@string/search"
    app:showAsAction="ifRoom"/>

layout.xml

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolBar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/theme_primary"/>
</LinearLayout>

java代码:

 Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    toolbar = (Toolbar) findViewById(R.id.toolBar);
    toolbar.inflateMenu(R.menu.menu_ware_house);
}

这是所有代码,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

只需使用 AppcompactActivity 扩展您的活动,然后使用

setSupportActionBar(toolbar);

删除此行

toolbar.inflateMenu(R.menu.menu_ware_house);

使用 onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu)
{        
    getMenuInflater().inflate(R.menu.my, menu);

    return true;
}

自动显示的菜单将显示在工具栏中。

答案 1 :(得分:0)

在工具栏布局中对菜单进行充气不会使其像行为栏菜单一样运行。执行以下操作:

  1. 确保您的活动扩展 AppCompatActivity

  2. 通过setSupportActionBar(toolbar)方法

  3. 中的onCreate()工具栏实例设置为操作栏
  4. 使用onCreateOptionsMenu方法对菜单进行充气。

    您的完整代码将是:

    public class SomeActivity extends AppCompatActivity {
    
        Toolbar toolbar;
    
        ...
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            toolbar = (Toolbar) findViewById(R.id.toolBar);
            setSupportActionBar(toolbar);
            ...
        }
    
        ...
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            //Inflate menu_ware_house.xml as my menu
            getMenuInflater().inflate(R.menu.menu_ware_house, menu);
            return true;
        }
    }
    
  5. 布局和菜单资源文件很好。 希望这有帮助!