当我使用toolbar.inflateMenu()方法将菜单设置为工具栏时,菜单项将放在错误的位置。
正确的效果:
但是当应用程序在我的手机中运行时,它就变成了:
这是代码: 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);
}
这是所有代码,有人可以帮助我吗?
答案 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)
在工具栏布局中对菜单进行充气不会使其像行为栏菜单一样运行。执行以下操作:
确保您的活动扩展 AppCompatActivity
通过setSupportActionBar(toolbar)
方法
onCreate()
将工具栏实例设置为操作栏
使用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;
}
}
布局和菜单资源文件很好。 希望这有帮助!