【问题标题】:Support Action Bar not applying my style?支持 Action Bar 不应用我的风格?
【发布时间】:2015-07-01 14:35:07
【问题描述】:

我一直在花费数小时尝试根据此堆栈溢出帖子修复不断变化的操作栏标题大小: 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,所以我并不完全熟悉一切是如何工作的。

【问题讨论】:

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


    【解决方案1】:

    你需要使用

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

    【讨论】:

      【解决方案2】:

      我不知道这是否是您所做的全部,但您必须在清单中添加此代码(在您要应用此样式的活动中):

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

      【讨论】:

        【解决方案3】:

        这样试试:

        • 为您的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)
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-04
          • 1970-01-01
          • 2011-01-12
          • 1970-01-01
          相关资源
          最近更新 更多