2015-10-14 78 views
3

我在我的項目中使用了設計支持庫,並且想要將CollapsingToolbarLayout標題的方向從ltr更改爲rtl(如下所示)。如何才能做到這一點?如何更改CollapsingToolbarLayout標題的方向?

CollapsingToolbarLayout's title is right to left

我檢查this link但找不到任何有用。 這種設計佈局還沒有準備好,但是這是一個類似的XML:

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/detail_backdrop_height" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:fitsSystemWindows="true"> 

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

     <ImageView 
      android:id="@+id/backdrop" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" /> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
      app:layout_collapseMode="pin" /> 

    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingTop="24dp"> 

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="@dimen/card_margin"> 

      <LinearLayout 
       style="@style/Widget.CardContent" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

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

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/cheese_ipsum" /> 

      </LinearLayout> 

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

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/card_margin" 
      android:layout_marginLeft="@dimen/card_margin" 
      android:layout_marginRight="@dimen/card_margin"> 

      <LinearLayout 
       style="@style/Widget.CardContent" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

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

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/cheese_ipsum" /> 

      </LinearLayout> 

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

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/card_margin" 
      android:layout_marginLeft="@dimen/card_margin" 
      android:layout_marginRight="@dimen/card_margin"> 

      <LinearLayout 
       style="@style/Widget.CardContent" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

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

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/cheese_ipsum" /> 

      </LinearLayout> 

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

    </LinearLayout> 

</android.support.v4.widget.NestedScrollView> 

<android.support.design.widget.FloatingActionButton 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    app:layout_anchor="@id/appbar" 
    app:layout_anchorGravity="bottom|right|end" 
    android:src="@drawable/ic_discuss" 
    android:layout_margin="@dimen/fab_margin" 
    android:clickable="true"/> 

+1

發佈您的XML請。 –

+0

整潔的設計! :) – hadi

+0

你也可以通過強制視圖到RTL來改變方向。 'getWindow()。getDecorView()。setLayoutDirection(View.LAYOUT_DIRECTION_RTL);'。但對於波紋管17這不會工作 – hadi

回答

8

末,我發現我可以做到這一點xml和java: xml代碼中的這些屬性

<android.support.design.widget.CollapsingToolbarLayout 
    app:collapsedTitleGravity="right" 
    app:expandedTitleGravity="right" 

或在Java

collapsingToolbar.setExpandedTitleGravity(Gravity.RIGHT); 
collapsingToolbar.setCollapsedTitleGravity(Gravity.RIGHT); 

這些代碼可以改變標題的方向。

+0

請注意,建議您也添加垂直引力:對於collapsedTitleGravity添加center_vertical,併爲expandedTitleGravity添加底部 –

+1

我不明白爲什麼「開始」值不起作用。它應該在左右語言的右邊,在其他語言的左邊。但它仍然在左邊。 – ATom

+0

@ATom也許你在清單中添加'android:supportsRtl =「true」' –

1

從XML除去 ExpandedTitleGravity和CollapsedTitleGravity 和我檢查佈局的方向和到collapsingToolbarLayout添加編程重力爲波紋管。

請確保在您的if條件下,您正確地獲得方向,但有時並未給出正確的方向。

if (ViewCompat.getLayoutDirection("your_view_here") == ViewCompat.LAYOUT_DIRECTION_LTR) { 
     collapsingToolbarLayout.setExpandedTitleGravity(Gravity.START | Gravity.BOTTOM); 
    } else { 
     collapsingToolbarLayout.setExpandedTitleGravity(Gravity.END | Gravity.BOTTOM); 
    }