支持Action Bar不适用我的风格?

时间:2015-07-01 14:35:07

标签: android android-actionbar android-appcompat android-styles

根据这个堆栈溢出帖子,我花了好几个小时试图修复不断变化的操作栏标题大小:  Android Toolbar: small title text in landscape mode

不幸的是,似乎无论我做什么,关于动作栏样式的任何内容都不会真正适用。

我的样式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,我基本上模拟了父主题是如何做到的,但它不会改变任何东西。有人知道发生了什么事吗?我刚刚更新到AppCompat,所以我并不完全熟悉一切是如何工作的。

3 个答案:

答案 0 :(得分:1)

您需要使用

<item name="background">@drawable/ab_solid</item>
<item name="titleTextStyle">@style/my_title_style</item>

支持库兼容您的风格。

阅读Styling the Action Bar,&#34; For Android 2.1 and higher&#34;。如果给出您需要使用两个条目,如

<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>

答案 1 :(得分:0)

我不知道是否已经完成了所有操作,但您必须在清单中添加此代码(在您要应用此样式的活动中):

<activity
    android:name=".MyActivity"
    android:label="@string/appName"
    android:theme="@style/my_little_style" >
</activity>

答案 2 :(得分:0)

尝试这种方式:

  • 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>
    
  • layout中加入.xml

    <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)