样式工具栏无法使用 AppCompat
Styling Toolbar does not work using AppCompat
我尽我所能在我的应用程序中设置 ActionBar
(即 android.support.v7.widget.Toolbar
)的样式,但它就是行不通。尝试实现此目的时,我正在关注 official documentation。 我真正想做的是将标题颜色设为白色。它目前显示为黑色。我的目标 API 是 11.
我做错了什么?
res/values/themes.xml
<resources>
<!-- Base theme applied no matter what API -->
<style name="MMTheme.Base" parent="Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColor">@color/mm_dark_gray</item>
<item name="colorPrimary">@color/mm_brown</item>
<item name="colorPrimaryDark">@color/mm_dark_gray</item>
<item name="colorAccent">@color/mm_green</item>
<item name="android:actionBarStyle">@style/MMActionBar</item>
<item name="android:actionBarTabTextStyle">@style/MMActionBarTabText</item>
<item name="android:actionMenuTextColor">@color/mm_green</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MMActionBar</item>
<item name="actionBarTabTextStyle">@style/MMActionBarTabText</item>
<item name="actionMenuTextColor">@color/mm_green</item>
</style>
<style name="MMTheme" parent="MMTheme.Base"></style>
<!-- ActionBar style -->
<style name="MMActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@color/mm_green</item>
<item name="android:titleTextStyle">@style/MMActionBarTitleText</item>
<!-- Support library compatibility -->
<item name="titleTextStyle">@style/MMActionBarTitleText</item>
</style>
<!-- ActionBar title text -->
<style name="MMActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/mm_white</item>
<!-- The textColor property is backward compatible with the Support Library -->
</style>
<!-- ActionBar tabs text -->
<style name="MMActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
<item name="android:textColor">@color/mm_green</item>
<!-- The textColor property is backward compatible with the Support Library -->
</style>
</resources>
充气的android.support.v7.widget.Toolbar
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mm_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"/>
在Activity
// Setup main Toolbar
Toolbar toolbar = (Toolbar) mInflatedActivity.findViewById(R.id.mm_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
我能想到的都试过了,网上也搜了很多,还是不行。我错过了什么?
当前结果是(忽略搜索图标):
将 style="@style/MMActionBar"
添加到 android.support.v7.widget.Toolbar
的 xml 属性会导致:
将主要 parent 主题更改为 Theme.AppCompat.Light.DarkActionBar
没有任何作用。
只需在您的布局中使用它 xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/red600"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
将 xml 中的主题设置为 ThemeOverlay.AppCompat.Dark.ActionBar,这将使标题文本变为白色。
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
而且我想这是给工具栏设置主题的正确方法,因为根据官方 Android 开发者博客
Styling of Toolbar is done differently to the standard action bar, and
is set directly onto the view.
Here's a basic style you should be using when you're using a Toolbar
as your action bar:
<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
The app:theme declaration will make sure that your text and items are
using solid colors (i.e 100% opacity white).
我遇到了同样的问题。以下解决方案解决了我的问题。
为此,您需要在两个地方进行更改。
1.Modify 你的工具栏 xml 像这样,
<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/ColorPrimary"
android:elevation="2dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
android:id="@+id/TV_tool_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My App Name"
android:textSize="18sp"
android:textColor="#FFFFFF"/>
</android.support.v7.widget.Toolbar>
在你的 activity 文件中这样修改。
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
就是这样。这将使您的标题颜色为白色。干杯..!
使用它来更改工具栏上字母的颜色:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="4dp"
>
</android.support.v7.widget.Toolbar>
我尽我所能在我的应用程序中设置 ActionBar
(即 android.support.v7.widget.Toolbar
)的样式,但它就是行不通。尝试实现此目的时,我正在关注 official documentation。 我真正想做的是将标题颜色设为白色。它目前显示为黑色。我的目标 API 是 11.
我做错了什么?
res/values/themes.xml
<resources>
<!-- Base theme applied no matter what API -->
<style name="MMTheme.Base" parent="Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColor">@color/mm_dark_gray</item>
<item name="colorPrimary">@color/mm_brown</item>
<item name="colorPrimaryDark">@color/mm_dark_gray</item>
<item name="colorAccent">@color/mm_green</item>
<item name="android:actionBarStyle">@style/MMActionBar</item>
<item name="android:actionBarTabTextStyle">@style/MMActionBarTabText</item>
<item name="android:actionMenuTextColor">@color/mm_green</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MMActionBar</item>
<item name="actionBarTabTextStyle">@style/MMActionBarTabText</item>
<item name="actionMenuTextColor">@color/mm_green</item>
</style>
<style name="MMTheme" parent="MMTheme.Base"></style>
<!-- ActionBar style -->
<style name="MMActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@color/mm_green</item>
<item name="android:titleTextStyle">@style/MMActionBarTitleText</item>
<!-- Support library compatibility -->
<item name="titleTextStyle">@style/MMActionBarTitleText</item>
</style>
<!-- ActionBar title text -->
<style name="MMActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/mm_white</item>
<!-- The textColor property is backward compatible with the Support Library -->
</style>
<!-- ActionBar tabs text -->
<style name="MMActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText">
<item name="android:textColor">@color/mm_green</item>
<!-- The textColor property is backward compatible with the Support Library -->
</style>
</resources>
充气的android.support.v7.widget.Toolbar
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mm_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"/>
在Activity
// Setup main Toolbar
Toolbar toolbar = (Toolbar) mInflatedActivity.findViewById(R.id.mm_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
我能想到的都试过了,网上也搜了很多,还是不行。我错过了什么?
当前结果是(忽略搜索图标):
将 style="@style/MMActionBar"
添加到 android.support.v7.widget.Toolbar
的 xml 属性会导致:
将主要 parent 主题更改为 Theme.AppCompat.Light.DarkActionBar
没有任何作用。
只需在您的布局中使用它 xml
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/red600"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
将 xml 中的主题设置为 ThemeOverlay.AppCompat.Dark.ActionBar,这将使标题文本变为白色。
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
而且我想这是给工具栏设置主题的正确方法,因为根据官方 Android 开发者博客
Styling of Toolbar is done differently to the standard action bar, and is set directly onto the view.
Here's a basic style you should be using when you're using a Toolbar as your action bar:
<android.support.v7.widget.Toolbar android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
The app:theme declaration will make sure that your text and items are using solid colors (i.e 100% opacity white).
我遇到了同样的问题。以下解决方案解决了我的问题。 为此,您需要在两个地方进行更改。
1.Modify 你的工具栏 xml 像这样,
<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@color/ColorPrimary"
android:elevation="2dp"
xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView
android:id="@+id/TV_tool_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My App Name"
android:textSize="18sp"
android:textColor="#FFFFFF"/>
</android.support.v7.widget.Toolbar>
在你的 activity 文件中这样修改。
Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(null);
就是这样。这将使您的标题颜色为白色。干杯..!
使用它来更改工具栏上字母的颜色:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="4dp"
>
</android.support.v7.widget.Toolbar>