使用setSupportActionBar()+ android.support.v7.widget.Toolbar的问题

时间:2017-07-07 18:30:16

标签: android toolbar

我在使用android.support.v7.widget.Toolbar时遇到了一些问题,并且已经把我的头发拉了好几天试图让它工作。

具体来说,我无法将标题或加载菜单项修改为应用/操作栏。

您可以提供的任何帮助都将非常感谢!否则,我将完成所有这些并尝试使用专用文本图标构建自定义应用程序工具栏。如果这是正确的方法,请告诉我!谢谢!

我相信我正确构建了工具栏,但是当我尝试更新标题时,没有任何反应。此外,没有菜单通过onOptionsItemSelected()加载。事实上,甚至没有调用onOptionsItemSelected。

  1. compileSdkVersion 25
  2. buildToolsVersion '25 .0.3'
  3. minSdkVersion 21
  4. targetSdkVersion 25
  5. 有趣的是,如果我将相同的setSupportActionBar()相关代码放入onOptionsItemSelected()方法,它就可以工作。当然,这假设您有要触发的菜单键,因为我还没有看到如何在没有菜单键的情况下在某些手机上调用onOptionsItemSelected()。

    我使用内置Android Studio的模拟Nexus 6 API 25和Genymotion的三星Galaxy S6 API 22进行了测试。

    相同的结果。

    toolbar_main.xml

    android.support.v7.widget.Toolbar
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      android:minHeight="?attr/actionBarSize"
      android:background="?attr/colorPrimary"
      android:titleTextColor="@color/White"
      android:elevation="4dp"
      android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
      app:popupTheme="@style/ThemeOverlay.AppCompat"
      app:titleTextAppearance="@style/Toolbar.TitleText"
      app:layout_collapseMode="pin">
    

    activity_main.xml中

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:tools="http://schemas.android.com/tools"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:fitsSystemWindows="true"
                  android:background="@color/Black"
                  android:orientation="vertical">
    
       <include
             android:id="@+id/main_custom_toolbar"
             layout="@layout/toolbar_main"/>
    
       <TextView
             android:id="@+id/test_header"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:background="@color/Black"
             android:layout_marginTop="15sp"
             android:gravity="center"
             android:text="HoneyDo Tasks"
             android:textColor="@color/Yellow"
             android:textSize="30dp"
             android:textStyle="bold">
       </TextView>
    </LinearLayout>
    

    MainActivity.java

      @Override
       protected void onCreate(Bundle savedInstanceState)
       {
          super.onCreate(savedInstanceState);
    
          setContentView(R.layout.activity_main);
    
          Toolbar toolbar = (Toolbar) findViewById(R.id.main_custom_toolbar);
          setSupportActionBar(toolbar);
          getSupportActionBar().setTitle("New Title");
       }
    
    
       @Override
       public boolean onCreateOptionsMenu(Menu menu)
       {
          getMenuInflater().inflate(R.menu.menu_main, menu);
          return super.onCreateOptionsMenu(menu);
       }
    

1 个答案:

答案 0 :(得分:0)

我给你最少的代码,对我有用:

的xml:

AppBarLayout

您可以跳过ToolBar并仅使用AndroidManifest

还要对<activity android:name="YourActivityName" android:theme="@style/AppTheme.NoActionBar"></activity>

进行更改
styles.xml

和您的 <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style>

{{1}}