6

私のプロジェクトでCollapsingToolbarLayoutという問題が発生しました。私の活動は、これは私のツールバーのタイトルが表示されますどのように起動した後:展開時のタイトルCollapsingToolbarLayoutが正しく表示されない

the expanded title has dots at the end

レイアウトを崩壊した後、このようなものです:

collapsed title with dots at the end

例では、元のタイトルテキストは次のとおりである:「UPC VONALKODOS TERMEK "

私は、拡張状態のタイトルは長い(そこには十分な余裕がある)と思う経過状態。これが私の活動のXMLがどのようなものか:

<style name="ExpandedText" parent="android:TextAppearance"> 
    <item name="android:textColor">@android:color/white</item> 
    <item name="android:textSize">20sp</item> 
    </style> 

サポートライブラリのバージョン:25.1.1

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    app:theme="@style/PolarThemeNoActionBar"> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_below="@+id/tablayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
    <android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="142dp" 
      android:fitsSystemWindows="true" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleMarginBottom="20dp" 
      app:expandedTitleTextAppearance="@style/ExpandedText"> 
      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       android:minHeight="?attr/actionBarSize" 
       app:layout_collapseMode="pin"/> 
      </android.support.design.widget.CollapsingToolbarLayout> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/tablayout" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_below="@+id/toolbar" 
      android:minHeight="?attr/actionBarSize" 
      android:gravity="bottom" 
      android:background="?attr/colorPrimary" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      app:tabIndicatorColor="?attr/colorPrimaryDark"/> 
     </android.support.design.widget.AppBarLayout> 
    </android.support.design.widget.CoordinatorLayout> 

私のres /スタイル/ ExpandedTextは次のようになります。 は電話:ネクサス5 Androidのバージョン:6.0.1(株)

私の質問:タイトルが拡張した状態で最後にドットを持って、それから多くを表示するためにスペースを埋めていないのはなぜ?

[EDIT 1]問題はまだあなたがellipsizingオフにすることができますサポートライブラリのバージョン25.3.0

+1

この動作が比較的最近のライブラリバージョンで導入されたようです。私はそれが奇妙に思えたので、古いプロジェクトを引っ張りました。バージョン23.4.0で期待しているように動作します。つまり、前に述べたように、タイトルは完全に展開された状態で表示され、折りたたまれたサイズと領域に基づいて省略されるのではありません。私はどのバージョンが変更をもたらしたのか分からないが、ソースのgitの責任を見て、タイトルがアイコンなどと重なる場合の端の問題を修正するために、これは昨年半ばに行われたようだ。もしそれが可能ならば、問題を提出し、今のところ元に戻すことができます。 –

+1

@Mike M.コメントありがとうございます。私はあなたが正しいと思う、私のアプリの古いバージョンでは、 'CollapsingToolbarLayout'のタイトルは正常に見える:私は答えとしてこのコメントを投稿すべきだと思う。 – zkminusck

答えて

4

CollapsingToolbarLayoutは、ヘルパークラスを使用しています。執筆時点では、このクラスの最近のバージョンでは、展開されたタイトルの使用可能な幅が、折り畳まれた状態で利用可能な幅に基づいて、状態のテキストサイズの比率でスケーリングされたサイズに制限されています。

関連するソースのコメント:

// If the scaled down size is larger than the actual collapsed width, we need to 
// cap the available width so that when the expanded text scales down, it matches 
// the collapsed width 

the relevant commit上の注意事項で説明したようにこれは明らかに、タイトルが他のToolbarのものと重複しますいくつかのエッジケースに対処するために導入されました。 CTLはそれをほとんどの状況で働くタイトルをスケーリング

アイコンの上に表示

修正CollapsingToolbarLayout。 タイトルが のツールバーの内容、つまりアイコンに描かれている場合は、エッジケースがあります。

このCLは崩壊 および拡張テキストサイズが がスクロールしながら 起こっ限定/スケーリングが存在しないことを意味し、サイズが類似しているエッジケースを固定します。この例では、展開時に利用可能な幅を に設定する必要があります。そのため、折りたたまれたときに折りたたまれた幅に合わせて 'scales'が調整されます。

通常は、私はすべての反射や他の策略で自分の行動を修正するためにViewクラスに引き裂くについてだが、この場合には、与えられた設定は、これはいくつかの本当に重い物を持ち上げるを取るようなものです。ヘルパークラスは通常ライブラリパッケージの外部ではアクセスできません。そのインスタンスはCollapsingToolbarLayoutでプライベートですが、サイジング計算は主にローカル変数を持つプライベートの2次メソッドで実行されます。

可能性がある場合は、最も簡単な解決策は、この修正プログラムの前に公開されたライブラリバージョンに戻すことです。私はこの変更をもたらした正確なバージョンを決定していないし、support library revision historyは残念なことにそれを言及していないようだ。しかし、そのコミットは昨年(2016年)の途中で行われていたので、おそらくバージョン24.0.0以降、あるいはそれ以降のバージョンです。その動作が23.4.0に存在しないことを確認することができます。

これは確かにfile a bug reportですが、あなたが望むのであれば、これはバグだとは思わないでしょう。私はこれに関連して以前に提起された問題は見つけられませんでした。this tangentially-related oneはその変更の副作用である省略記号について不平を言っていました。

+2

よく整えます。 –

0

に残ります。あなたのTextAppearanceスタイルにこれを追加します。

<item name="android:ellipsize">none</item> 

ことが必要だ場合は、手動でも、私はあなたのコードを編集スタイルに

<item name="android:width">300dp</item> 
+0

あなたの答えをありがとうが、それは働かなかった。私の「CollapsingToolbar」のタイトルは同じように見えます。 – zkminusck

0

を幅を追加することによって作成されたのTextViewの幅を変更することができ、この5月を参照してくださいあなたはこの

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/tablayout" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="142dp" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginBottom="20dp" 
     app:expandedTitleMarginStart="48dp" 
     app:expandedTitleTextAppearance="@style/ExpandedText" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:minHeight="?attr/actionBarSize" 
      app:contentInsetLeft="0dp" 
      app:contentInsetStart="0dp" 
      app:contentInsetStartWithNavigation="0dp" 
      app:layout_collapseMode="pin" /> 
    </android.support.design.widget.CollapsingToolbarLayout> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tablayout" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     android:gravity="bottom" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:tabIndicatorColor="?attr/colorPrimaryDark" /> 
</android.support.design.widget.AppBarLayout> 

が好きで、これはActivityクラス

0であること

}

をして、これはRES /スタイルです/: - CollapsingTextHelper - 描き、そのタイトルをアニメーション化する

<style name="CollapsedAppBar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">16sp</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:textStyle">normal</item> 
</style> 
<style name="ExpandedAppBar" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textSize">20sp</item> 
    <item name="android:textStyle">bold</item> 
</style> 
+0

あなたの答えをありがとうが、それは動作していません。 – zkminusck

関連する問題