6

所以,我的項目中我的CollapsingToolbarLayout有一個奇怪的問題。我的活動啓動後,這是我的工具欄標題的顯示方式:標題在展開CollapsingToolbarLayout不能正確顯示

the expanded title has dots at the end

後倒塌的佈局是這樣的:

collapsed title with dots at the end

例子中的原題文字是:「UPC VONALKODOS TERMEK

我認爲擴展狀態下的標題應該比在co中更長(有足夠的空間)消失的狀態。這就是我活動的XML看起來像:

<?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樣子:

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

支持庫版本:25.1.1。 電話:Nexus 5的 Android版本:6.0.1(股票)

我的問題:爲什麼標題都在擴張狀態的結束點,而不是填充的空間從它表現出更多?

[編輯1]問題仍然與支持庫版本25.3.0

+1

看起來這種行爲是在相對較新的庫版本中引入的。我認爲這看起來很奇怪,所以我拉了一箇舊的項目,它的行爲與您期望的版本23.4.0相同。即,如前所述,標題完全處於展開狀態,而不是像摺疊的尺寸和麪積那樣被橢圓化。我不確定哪個版本帶來了改變,但看看源代碼的責任,看起來這是在去年年中完成的,以修復標題會重疊圖標等的邊緣案例。如果可能的話,你可以提出問題並立即恢復。 –

+1

@Mike M.感謝您的評論。我認爲你是對的,在我的應用程序的舊版本中'CollapsingToolbarLayout'標題看起來不錯:我認爲你應該發表這個評論作爲答案。 – zkminusck

回答

4

CollapsingToolbarLayout使用一個輔助類 - CollapsingTextHelper - 畫和動畫的標題。在撰寫本文時,此類的最新版本將展開標題的可用寬度限制爲基於摺疊狀態中可用寬度的大小,並根據州的文本大小比例進行縮放。

相關源代碼註釋:

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

這顯然介紹,以解決一些邊緣情況下,標題會重疊其他Toolbar的東西,作爲the relevant commit在附註中說明。

修復CollapsingToolbarLayout顯示在圖標

CTL擴展它的標題,在大多數情況下工作。 雖然有些情況下可以在工具欄內容上繪製標題 ,即圖標。

這CL固定邊緣的情況下倒塌 和擴展的文本大小在尺寸上類似,這 意味着存在有限的/不結垢發生 而滾動。在這種情況下,我們需要在展開時限制 任何可用的寬度,以便它在縮放時「縮放」以匹配摺疊寬度。

通常情況下,我所有關於撕開View類修改其與反射和其他弄虛作假行爲,但在這種情況下,給定的設置是這樣的,這將需要一些非常繁重。輔助類通常不能在庫包之外訪問,它的實例在CollapsingToolbarLayout中是私有的,並且大小計算是在大多數局部變量的私有輔助方法中執行的。

如果這是一種可能性,最簡單的解決方案是恢復到此修復程序之前發佈的庫版本。我還沒有確定帶來這種改變的確切版本,不幸的是,support library revision history似乎沒有提到它。但是,這個提交是在去年年中(2016年)進行的,所以可能在24.0.0版本左右,或者稍後。我可以驗證該行爲在23.4.0中不存在。

你當然可以爲file a bug report,如果你喜歡,雖然不能保證他們會認爲這是一個錯誤。我沒有發現任何以前提出的關於這個問題的問題,除了this tangentially-related one抱怨說這個改變的副作用。

+2

精心製作。 –

0

您可以關閉ellipsizing。添加到您的TextAppearance風格:

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

如果有必要,你也可以手動改變是通過將寬度的風格

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

感謝您的回答,但沒有奏效。我的'CollapsingToolbar'標題看起來一樣。 – zkminusck

0

我編輯你的代碼中看到這可能創造了TextView的寬度是你喜歡這個

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

這是活動課

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private CollapsingToolbarLayout collapsingToolbar; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.answer2); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); 
    collapsingToolbar.setTitle("UPC VONALKODOS TERMEK"); 
    collapsingToolbar.setExpandedTitleTextAppearance(R.style.ExpandedAppBar); 
    collapsingToolbar.setCollapsedTitleTextAppearance(R.style.CollapsedAppBar); 
} 

}

,這是RES /風格/:

<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