2016-12-23 110 views
1

我一直在关注“设置应用栏”链接here上的Android开发者页面。问题是我似乎无法正确地做到这一点,屏幕显示一些奇怪的工具栏没有溢出菜单。我已阅读了其他一些答案并澄清,我正在使用Moto G2进行测试。它不包含硬件方面的选项按钮。工具栏不显示溢出菜单

我的代码如下:1。 MainActivity.java

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
}} 
  • activity_main.xml中
  • <?xml version="1.0" encoding="utf-8"?> 
     
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     
        xmlns:tools="http://schemas.android.com/tools" 
     
        xmlns:app="http://schemas.android.com/apk/res-auto" 
     
        android:id="@+id/activity_main" 
     
        android:layout_width="match_parent" 
     
        android:layout_height="match_parent" 
     
        android:paddingBottom="@dimen/activity_vertical_margin" 
     
        android:paddingLeft="@dimen/activity_horizontal_margin" 
     
        android:paddingRight="@dimen/activity_horizontal_margin" 
     
        android:paddingTop="@dimen/activity_vertical_margin" 
     
        tools:context="com.example.android.toolbardemo.MainActivity"> 
     
    
     
        <android.support.v7.widget.Toolbar 
     
         android:id="@+id/toolbar" 
     
         android:layout_width="match_parent" 
     
         android:layout_height="?attr/actionBarSize" 
     
         android:background="?attr/colorPrimary" 
     
         android:elevation="4dp" 
     
         android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
     
         app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 
     
    
     
        <TextView 
     
         android:layout_width="wrap_content" 
     
         android:layout_height="wrap_content" 
     
         android:text="Hello World!" /> 
     
    </RelativeLayout>

  • 的AndroidManifest.xml
  • <?xml version="1.0" encoding="utf-8"?> 
     
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     
        package="com.example.android.toolbardemo"> 
     
    
     
        <application 
     
         android:allowBackup="true" 
     
         android:icon="@mipmap/ic_launcher" 
     
         android:label="@string/app_name" 
     
         android:supportsRtl="true" 
     
         android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
     
         <activity android:name=".MainActivity"> 
     
          <intent-filter> 
     
           <action android:name="android.intent.action.MAIN" /> 
     
    
     
           <category android:name="android.intent.category.LAUNCHER" /> 
     
          </intent-filter> 
     
         </activity> 
     
        </application> 
     
    
     
    </manifest>

    Android开发者页面没有提及有关创建菜单XML之类的东西,所以我推测至少应基本设置应该会出现什么。

    这里是我所看到的图片:No Overflow menu

    回答

    1

    更改RelativeLayout这样:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.android.toolbardemo.MainActivity"> 
    

    ,您需要将此代码添加到您的活动

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

    好极了!非常感谢你@Amir_P!我花了大约2.5小时让这个溢出菜单正常工作! –

    +0

    谢谢!官方开发者指南已过时。它应该更新以添加你的'onCreateOptionsMenu(...)'。 –

    0

    您需要将toolbar设置为ActionBar像这样setSupportActionBar(toolbar)并在活动中覆盖onCreateOptionsMenu像这样:

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

    在你menu.xml文件,你需要设置app:showAsAction="never"

    <item android:id="@+id/action_search" 
        android:title="@string/search" 
        app:actionViewClass="android.support.v7.widget.SearchView" 
        app:showAsAction="never"/>