【问题标题】:Styling ActionBar Spinner Navigation to look like it's title and subtitle样式化 ActionBar Spinner Navigation 使其看起来像它的标题和副标题
【发布时间】:2013-07-21 02:47:31
【问题描述】:

我在操作栏中使用 Spinner 导航。除了样式,一切都很好。

我希望微调器导航看起来像一个有标题和副标题的操作栏:

但如果我使用微调器导航,我必须将标题和副标题设置为空字符串并提供我自己的微调器视图。我这样做,但它看起来像这样:

问题:使微调器看起来与上图相同的样式是什么?

注意:我尝试将 TextViews textAppearance 分别设置为 android:textAppearance="@android:style/TextAppearance.Medium"android:textAppearance="@android:style/TextAppearance.Small",但没有成功。

我使用原生 Actionbar,而不是 ABS。

【问题讨论】:

  • 在我看来,您应该为微调器的项目创建自定义 xml 并使用文本大小使其成为那样。
  • 我会玩得很开心,但我很确定不同的布局有很多不同的风格。我知道 actionbar 的高度有几种不同的尺寸,我可以用单个 @dimen/abs__action_bar_default_height 得到它们(这实际上是用于 actionbarsherlock,但规则 Actionbar 有类似的值)。我在这里寻找类似的东西。

标签: android android-actionbar


【解决方案1】:

这些项目的高度在/<android-sdk>/platforms/android-15/data/res/values/dimens.xml 文件中定义,如下所示:

<dimen name="action_bar_default_height">48dip</dimen>
<dimen name="action_bar_title_text_size">18dp</dimen>
<dimen name="action_bar_subtitle_text_size">14dp</dimen>
<dimen name="action_bar_subtitle_top_margin">-3dp</dimen>
<dimen name="action_bar_subtitle_bottom_margin">5dip</dimen>

(详情请看:https://stackoverflow.com/a/11686495/989029

你应该在你的 res 文件夹中重新定义所需的值(注意这些值对于不同的方向是不同的,所以你也需要几个文件)并像这样使用它们:

actionbar_spinner_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="vertical"
    android:paddingLeft="5dp"
    android:paddingRight="5dp">

    <TextView
        android:id="@+id/action_bar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="@string/title_activity_main"
        android:textSize="@dimen/action_bar_title_text_size"
        android:textColor="@android:color/primary_text_dark"
        android:textStyle="bold" />

    <TextView
        android:id="@android:id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/action_bar_subtitle_top_margin"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@android:color/primary_text_dark"
        android:textSize="@dimen/action_bar_subtitle_text_size" />

</LinearLayout>

我在 getView() 方法中的自定义 ArrayAdapter 中使用此布局。从您的屏幕截图中,我假设您知道详细信息。

所有这些都给出了以下结果,在我测试过的所有设备上看起来都符合预期。

【讨论】:

  • 我会在几天内尝试这个解决方案(然后接受它),但它看起来很棒。谢谢!
  • 实际上我认为通过直接引用这些值(如android:textSize="@anroid:dimen/action_bar_title_text_size")可以更轻松地完成,但我必须检查它。不过,感谢您向我指出这些价值观
  • 不知道,在我将它们重新导入自己的文件中之前,eclipse 从未在自动完成中向我显示这些值。
  • 当我继续从事我的项目时,我已经进一步调整了答案。
  • 如何通过点击导航抽屉列表项来更改action_bar_title。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 2020-04-14
  • 2013-03-13
  • 2017-10-23
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
相关资源
最近更新 更多