ToolBar和ToolBar的setTitle()方法不生效解决方法

来源:互联网 发布:硕士论文修改 淘宝 编辑:程序博客网 时间:2024/06/16 08:25

xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <android.support.v7.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@color/colorPrimary"        android:minHeight="?attr/actionBarSize"        android:popupTheme="@style/ToolbarPopupTheme"        android:theme="@style/ToolbarTheme"        app:popupTheme="@style/ToolbarPopupTheme"        app:theme="@style/ToolbarTheme"    >    </android.support.v7.widget.Toolbar>    <android.support.v4.view.ViewPager        android:id="@+id/id_viewpager"        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="1" >    </android.support.v4.view.ViewPager>    <include layout="@layout/bottom" /></LinearLayout>

style样式

 <!-- toolbar菜单样式 -->    <style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">        <item name="android:textColorPrimary">@android:color/white</item>        <item name="actionMenuTextColor">@android:color/white</item>        <item name="android:textColorSecondary">@android:color/white</item>    </style>    <!-- toolbar弹出菜单样式 -->    <style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Light">        <item name="android:colorBackground">@color/white</item>        <item name="android:textColor">#212121</item>        <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>    </style>    <!--新增一个item,用于控制menu-->    <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">        <!--把该属性改为false即可使menu位置位于toolbar之下-->        <item name="overlapAnchor">false</item>    </style>

办法

其实解决办法很简单,只需要将 Java 代码中的最后三行改成如下所示的代码即可:

mActionBarToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);            setSupportActionBar(mActionBarToolbar);getSupportActionBar().setTitle("我的标题");

另一种情况

如果你想结合 CollapsingToolbarLayout 和 Toolbar 一起使用,那么上面的解决方式就不适用了,假设我们的 XML 布局文件如下所示:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/confirm_order_mail_layout"    android:layout_width="match_parent"    android:layout_height="fill_parent">    <android.support.design.widget.AppBarLayout        android:id="@+id/confirm_order_appbar_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">        <android.support.design.widget.CollapsingToolbarLayout            android:id="@+id/confirm_order_list_collapsing_toolbar"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:fitsSystemWindows="true"            app:contentScrim="?attr/colorPrimary"            app:expandedTitleMarginEnd="64dp"            app:expandedTitleMarginStart="48dp"            app:layout_scrollFlags="scroll|enterAlways">            <android.support.v7.widget.Toolbar                android:id="@+id/confirm_order_toolbar_layout"                android:layout_width="match_parent"                android:layout_height="?attr/actionBarSize"                android:background="?attr/colorPrimary"                app:layout_scrollFlags="scroll|enterAlways"                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">            </android.support.v7.widget.Toolbar>        </android.support.design.widget.CollapsingToolbarLayout>    </android.support.design.widget.AppBarLayout></android.support.design.widget.CoordinatorLayout>

这时我们需要调用 CollapsingToolbarLayout 的 setTitle() 方法:

CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.confirm_order_mail_layout);collapsingToolbarLayout.setTitle("My Title");

如何修改toolbar标题字体大小

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">    <item name="android:textSize">18sp</item></style><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="?actionBarSize"    android:id="@+id/toolbar"    app:titleTextAppearance="@style/Toolbar.TitleText" />

参考

  • 为什么 Android 中 Toolbar.setTitle() 没有效果
原创粉丝点击