Android工具栏标题中有两行?

时间:2014-12-05 08:55:53

标签: android android-layout android-actionbar android-toolbar

我希望有一个双倍高度操作栏(如材料指南示例中所示),但标题中有(可能)2行文本。我使用的标题是动态的,取决于页面中显示的项目。如果有一行它应该看起来像一个普通的操作栏,如果有2行,则文本应该断开并下拉到新行。无论是否有一行或两行,操作按钮都应与文本的顶行保持对齐。

我读到Toolbar是做动作栏的新动态方式所以我认为这可能是要走的路(我知道那里有答案可以让你覆盖旧的动作栏标题textview到使它成为2行,但这看起来不像我要去的那样。我使用的是Android 4.4+,因此我需要将appcompat v7库用于工具栏。

我在查看代码时发现标题textview仅限于一行(https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v7/appcompat/src/android/support/v7/widget/Toolbar.java - 包含代码mTitleTextView.setSingleLine();)。

然后我认为,由于下面有单行字幕,我们可以更改该文本的格式,我可以将其格式化为标题文本,并在必要时将我的标题分为两部分。我写了一些基本的代码来分割字符串,但它依赖于能够告诉我是否需要拆分它 - 实际上我发现toolbar.isTitleTruncated()总是返回false(两者都来自我直接访问的工具栏对象,以及getSupportActionBar().isTitleTruncated())。

我尝试了回答hereTextView包裹在Toolbar中,但我无法让TextView与工具栏操作按钮对齐我这样做。如果我为一条线正确对齐(使用顶部填充),那么对于双线来说它是错误的,反之亦然。这是我的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/view_content"
android:layout_width="match_parent"
android:layout_height="match_parent">

<fragment
    android:id="@+id/fragment_pager"
    android:name="com.example.ProductPagerFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.v7.widget.Toolbar
    android:id="@+id/product_details_toolbar"
    style="@style/style.toolbar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/double_height_toolbar"
    android:minHeight="?attr/actionBarSize"
    android:gravity="top"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >

    <TextView
        android:id="@+id/product_details_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:paddingTop="@dimen/padding_normal"
        style="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"
        android:maxLines="2" />

</android.support.v7.widget.Toolbar>

有没有人有任何想法?这是否真的与Android指南相反,应该如此困难?

更新:为演示目的添加图片:

应该如何看待:

How it should look

现在的样子:

How it does look

2 个答案:

答案 0 :(得分:16)

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(getResources().getString(R.string.myTitle));
toolbar.setSubtitle(getResources().getString(R.string.mySubTitle));
setSupportActionBar(toolbar);

教程:

ToolBar Example

Add Title, Subtitle, Color to Actionbar/Toolbar

答案 1 :(得分:5)

嗯,它适用于我。

Screenshot

<android.support.v7.widget.Toolbar
        android:layout_height="200dp"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:gravity="top"
        android:background="?attr/colorPrimaryDark"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"/>

</android.support.v7.widget.Toolbar>