我在使用android.support.v7.widget.Toolbar时遇到了一些问题,并且已经把我的头发拉了好几天试图让它工作。
具体来说,我无法将标题或加载菜单项修改为应用/操作栏。
您可以提供的任何帮助都将非常感谢!否则,我将完成所有这些并尝试使用专用文本图标构建自定义应用程序工具栏。如果这是正确的方法,请告诉我!谢谢!
我相信我正确构建了工具栏,但是当我尝试更新标题时,没有任何反应。此外,没有菜单通过onOptionsItemSelected()加载。事实上,甚至没有调用onOptionsItemSelected。
有趣的是,如果我将相同的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);
}
答案 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}}