标题中有两行的Android工具栏?

我想有一个双高度的操作栏(如在材料指南的例子),但(可能)标题中的两行文字。 我使用的标题是dynamic的,取决于页面中显示的项目。 如果有一行,它应该看起来像一个正常的操作栏,如果有两行,那么文本应该打破,并下降到一个新的行。 无论是否有一两行,操作button都应该保持与文本的第一行alignment。

我读到工具栏是做动作条的新dynamic方式,所以我想这可能是要走的路(我知道那里有答案,让你覆盖旧的行动栏标题文本视图,使其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(); )。

然后我想,因为下面有一行字幕,我们可以改变这个文本的格式,我可以把它和标题文本一样格式化,如果需要的话,把我的标题分成两部分。 我写了一些基本的代码来分割string,但它依靠能够告诉我是否需要拆分它 – 实际上,我发现toolbar.isTitleTruncated()总是返回false(从我的工具栏对象直接访问和从getSupportActionBar().isTitleTruncated() )。

我在这里尝试了在Toolbar包装TextView的答案,但是当我这样做时,我无法使TextView与工具栏动作buttonalignment。 如果我正确地alignment一行(使用顶部填充),那么对于双行是错误的,反之亦然。 这是我的代码:

 <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的指导方针,这应该是如此困难?

更新:添加图片用于演示目的:

它应该看起来如何:

它应该如何看待

现在看起来如何:

它看起来如何

Solutions Collecting From Web of "标题中有两行的Android工具栏?"

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

教程:

工具栏示例

添加标题,字幕,颜色到操作栏/工具栏

嗯,它对我来说工作得很好。

截图

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