2016-01-26 139 views
1

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

正确的效果:

enter image description here

但是当我的手机应用程序运行,它变成这样:

enter image description here

下面的代码: 菜单的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

您应该使用'onCreateOptionsMenue'来充气菜单并获得所需的结果。我不确定'toolbar.inflatemenu'方法。 –

+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; 
} 

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

0

在工具栏布局中填充菜单不会使其表现得像操作栏菜单一样。请执行以下操作:

  1. 确保您的活动延伸AppCompatActivity

  2. onCreate()方法调用setSupportActionBar(toolbar)设置工具栏实例作为动作条

  3. 充气菜单中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; 
        } 
    } 
    

布局和菜单资源文件的罚款。 希望这有助于!

+0

感谢您的答案,但我想我找到了问题。我在我的基本风格中写入 vertical。所以..但是,无论如何,谢谢 –