支持 Action Bar 不应用我的风格?
Support Action Bar not applying my style?
我花了几个小时试图根据这个堆栈溢出来修复不断变化的操作栏标题大小 post:
不幸的是,似乎无论我做什么,关于操作栏样式的任何内容都不会实际应用。
我的样式 v14 文件:
<!-- Main theme -->
<style name="MyTheme" parent="Theme.AppCompat">
<item name="android:actionBarItemBackground">@drawable/selectable_background</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.MyTheme</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.MyTheme</item>
<item name="android:actionDropDownStyle">@style/DropDownNav.MyTheme</item>
<item name="android:spinnerItemStyle">@style/Widget.MyTheme.TextView.SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/Widget.MyTheme.DropDownItem</item>
</style>
我的 ActionBar 样式:
<style name="Widget.MyTheme.ActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/ab_solid</item>
<item name="android:titleTextStyle">@style/my_title_style</item>
</style>
<style name="my_title_style" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="textSize">20sp</item>
</style>
当然,"MyTheme" 也应用在清单中 - 我什至尝试将它添加到所有单独的活动中,但无济于事。
看来无论我做什么,东西都不适用。我试过删除 android: 命名空间,我试过使用 titleTextAppearance 而不是 titleTextStyle,我基本上完全模拟了 parent 主题是如何做到的,但它不会改变任何东西。有人知道发生了什么事吗?我最近刚刚更新到 AppCompat,所以我并不完全熟悉一切是如何工作的。
我不知道这是否是您所做的全部,但您必须在清单中添加此代码(在您要应用此样式的 activity 中):
<activity
android:name=".MyActivity"
android:label="@string/appName"
android:theme="@style/my_little_style" >
</activity>
你需要使用
<item name="background">@drawable/ab_solid</item>
<item name="titleTextStyle">@style/my_title_style</item>
支持库与您的风格兼容。
阅读 Styling the Action Bar,“For Android 2.1 and higher
”部分。在给出的地方,您需要使用两个条目,例如
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
所以你的完整风格是
<style name="Widget.MyTheme.ActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/ab_solid</item>
<item name="android:titleTextStyle">@style/my_title_style</item>
<item name="background">@drawable/ab_solid</item>
<item name="titleTextStyle">@style/my_title_style</item>
</style>
这样试试:
为您的 Toolbar
创建布局并放置 TextView
:
<?xml version="1.0" encoding="utf-8"?>
<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_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:id="@+id/toolbar"
android:background="#b2b2b2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/toolbar_title"
android:textSize="20sp"
android:textColor="#ff282828"/>
</android.support.v7.widget.Toolbar>
在您的 .xml
中包含 layout
:
<include layout="@layout/toolbar_activities"
android:id="@+id/toolbar_layout"/>
终于在你的java class
中设置了一个标题:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_layout);
TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);
mTitle.setText("Your Title");
setSupportActionBar(toolbar)
我花了几个小时试图根据这个堆栈溢出来修复不断变化的操作栏标题大小 post:
不幸的是,似乎无论我做什么,关于操作栏样式的任何内容都不会实际应用。
我的样式 v14 文件:
<!-- Main theme -->
<style name="MyTheme" parent="Theme.AppCompat">
<item name="android:actionBarItemBackground">@drawable/selectable_background</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.MyTheme</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.MyTheme</item>
<item name="android:actionDropDownStyle">@style/DropDownNav.MyTheme</item>
<item name="android:spinnerItemStyle">@style/Widget.MyTheme.TextView.SpinnerItem</item>
<item name="android:spinnerDropDownItemStyle">@style/Widget.MyTheme.DropDownItem</item>
</style>
我的 ActionBar 样式:
<style name="Widget.MyTheme.ActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/ab_solid</item>
<item name="android:titleTextStyle">@style/my_title_style</item>
</style>
<style name="my_title_style" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="textSize">20sp</item>
</style>
当然,"MyTheme" 也应用在清单中 - 我什至尝试将它添加到所有单独的活动中,但无济于事。
看来无论我做什么,东西都不适用。我试过删除 android: 命名空间,我试过使用 titleTextAppearance 而不是 titleTextStyle,我基本上完全模拟了 parent 主题是如何做到的,但它不会改变任何东西。有人知道发生了什么事吗?我最近刚刚更新到 AppCompat,所以我并不完全熟悉一切是如何工作的。
我不知道这是否是您所做的全部,但您必须在清单中添加此代码(在您要应用此样式的 activity 中):
<activity
android:name=".MyActivity"
android:label="@string/appName"
android:theme="@style/my_little_style" >
</activity>
你需要使用
<item name="background">@drawable/ab_solid</item>
<item name="titleTextStyle">@style/my_title_style</item>
支持库与您的风格兼容。
阅读 Styling the Action Bar,“For Android 2.1 and higher
”部分。在给出的地方,您需要使用两个条目,例如
<style name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
所以你的完整风格是
<style name="Widget.MyTheme.ActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
<item name="android:background">@drawable/ab_solid</item>
<item name="android:titleTextStyle">@style/my_title_style</item>
<item name="background">@drawable/ab_solid</item>
<item name="titleTextStyle">@style/my_title_style</item>
</style>
这样试试:
为您的
Toolbar
创建布局并放置TextView
:<?xml version="1.0" encoding="utf-8"?> <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_height="?attr/actionBarSize" android:layout_width="match_parent" android:id="@+id/toolbar" android:background="#b2b2b2"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/toolbar_title" android:textSize="20sp" android:textColor="#ff282828"/> </android.support.v7.widget.Toolbar>
在您的
.xml
中包含layout
:<include layout="@layout/toolbar_activities" android:id="@+id/toolbar_layout"/>
终于在你的
java class
中设置了一个标题:Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_layout); TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title); mTitle.setText("Your Title"); setSupportActionBar(toolbar)