2015-10-14 83 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); 
    }