AppCompatActivity with Toolbar:菜单项未显示在工具栏上

时间:2016-08-25 22:20:01

标签: android-studio android-toolbar

抓我的头。如果有人可以帮助那将是伟大的。我正在使用工具栏从extends ActionBarActivity切换到扩展AppCompatActivity,并需要在工具栏上显示项目的帮助。

我使用的是extends AppCompatActivity android.support.v7.app.AppCompatActivity;然后在onCreate()里面有:

Toolbar jobListToolbar = (Toolbar) findViewById(R.id.job_list_toolbar);
setSupportActionBar(jobListToolbar);

然后在xml文件中我有

 <android.support.v7.widget.Toolbar
        android:id="@+id/job_list_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"/>

然后在菜单文件中我有项目,一切似乎都有效,但不是我想要的方式。

工具栏/操作栏显示在屏幕顶部,但没有显示菜单项。如果我按下手机原始菜单按钮,则首次启动onCreateOptionsMenu(Menu menu),并显示菜单。但它显示在这个电话按钮上方。但我希望这些按钮显示在屏幕顶部的工具栏/操作栏上。我在某处读到,如果手机有硬件菜单按钮,它将不会显示工具栏/操作栏中的菜单项,但我已经用extends ActionBarActivity以某种方式完成了它,但应该有一种方法可以使用extends AppCompatActivity。需要通过谷歌推荐到更新的推荐方式,但不知道如何在屏幕顶部的工具栏/操作栏上显示项目。

2 个答案:

答案 0 :(得分:1)

经过一天的研究,如何切换到AppCompat Toolbar终于找到了解决方案。两个必须做的步骤(第二个是没有人谈论的那个):

我。)有关如何设置工具栏的良好资源可以在此视频Toolbar Tutorial以及此StackOverflow: toolbar button

中找到

II。)请确认你在onCreate()的底部放置了这个代码:

toolbar= (Toolbar) findViewById(R.id.job_list_toolbar);
setSupportActionBar(toolbar);
if(getSupportActionBar()!=null) {
    getSupportActionBar().setDisplayShowHomeEnabled(true);
}

我的问题是我在onCreate()中有一些代码修改了工具栏按钮。该代码需要在工具栏打开之前运行。如果只有前面两行代码中包含的工具栏会显示,但没有菜单会膨胀而没有按钮。当我在调用getSupportActionBar().setDisplayShowHomeEnabled(true);时调用onCreateOptionsMenu(Menu menu)时(如果没有启用,则不会调用它),同时确保getMenuInflater().inflate(R.menu.job_list, menu);内有onCreateOptionsMenu(Menu menu)

如果要求打开getSupportActionBar().setDisplayShowHomeEnabled(true);菜单的代码不在onCreate()的末尾,您可能会感到头疼,为什么菜单没有显示。因此,在调用菜单打开之前,请确保执行相关的onCreate()代码。

答案 1 :(得分:0)

MyActivity:

    <android.support.v7.widget.Toolbar
      android:id="@+id/toolbarhome"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      app:popupTheme="@style/AppTheme.PopupOverlay"
      app:titleTextAppearance="@style/Toolbar.TitleText"
      app:layout_collapseMode="pin"
      android:background="@color/colorPrimary"
      android:contentInsetLeft="0dp"
      android:contentInsetStart="0dp"
      app:contentInsetLeft="0dp"
      app:contentInsetStart="0dp"
      android:contentInsetRight="0dp"
      android:contentInsetEnd="0dp"
      app:contentInsetRight="0dp"
      app:contentInsetEnd="0dp" >

        //designed the way you like

    </android.support.v7.widget.Toolbar>

activity_my.xml:如果需要,可以删除最后一行0 ep。它们是启动工具栏

的0的起点
        <activity
            android:name=".MyActivity"
            android:theme="@style/AppTheme.NoActionBar"/>

清单:

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light">    </style>

<style name="Toolbar.TitleText"    parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">20sp</item>
    <item name="android:textStyle">italic</item>
</style>
<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

式:

{{1}}
相关问题