web-dev-qa-db-ja.com

Androidツールバーにタイトルが2行ありますか?

(マテリアルガイドラインの例のように)2倍の高さのアクションバーが必要ですが、タイトルに(おそらく)2行のテキストが含まれています。私が使用しているタイトルは動的で、ページに表示されるアイテムによって異なります。 1行の場合、通常のアクションバーのように見えます。2行ある場合、テキストは分割され、新しい行にドロップダウンされます。アクションボタンは、1行でも2行でも、テキストの一番上の行に揃えておく必要があります。

私は Toolbar がアクションバーを実行する新しい動的な方法であることを読んだので、それがおそらく行く方法だと思いました(古いアクションバーのタイトルのテキストビューを上書きできる答えがあることは知っています) 2行にしますが、これも私がしようとしているようには見えません)。 Android 4.4+を使用しているため、ツールバーにappcompat v7ライブラリを使用する必要があります。

コードを見ると、タイトルのテキストビューが1行だけに制限されていることがわかりました( https://Android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v7/appcompat /src/Android/support/v7/widget/Toolbar.Java -コードmTitleTextView.setSingleLine();)が含まれます。

次に、下に1行のサブタイトルがあり、そのテキストのフォーマットを変更できるので、タイトルテキストと同じようにフォーマットし、必要に応じてタイトルを2つの部分に分けることができると考えました。文字列を分割するいくつかの基本的なコードを記述しましたが、分割する必要があるかどうかを判断できることに依存していました。実際、toolbar.isTitleTruncated()は常にfalseを返すことがわかりました(ツールバーのオブジェクトに直接アクセスして、およびgetSupportActionBar().isTitleTruncated())から。

TextViewToolbar内にラップするための回答 here を試しましたが、TextViewを取得してツールバーのアクションボタンに合わせることができません私がそれをするとき。 (上部のパディングを使用して)1行で正しく位置合わせすると、2行では正しくありません。逆も同様です。これが私のコードです:

<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

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

チュートリアル:

ツールバーの例

タイトル、サブタイトル、色をアクションバー/ツールバーに追加

17
Half Moon

うーん、それは私にとってはうまくいきます。

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>
5
Chris Banes