2015-06-15 25 views

Trả lời

3

@Javed, sửa tôi nếu tôi sai, bạn muốn đặt tiêu đề vào giữa Thanh công cụ, sau đó CollapsingToolbarLayout bị thu gọn và bố cục của bạn giống như thế này, phải không?

<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" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginStart="48dp" 
     app:expandedTitleMarginEnd="64dp" 
     android:fitsSystemWindows="true"> 

     <ImageView 
      android:id="@+id/image" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      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> 

Sau đó, bạn có thể thực hiện thủ thuật này (tôi làm điều đó trong onCreate của hoạt động):

try { 
     Field declaredField = toolbar.getClass().getDeclaredField("mTitleTextView"); 
     declaredField.setAccessible(true); 
     TextView titleTextView = (TextView) declaredField.get(toolbar); 
     ViewGroup.LayoutParams layoutParams = titleTextView.getLayoutParams(); 
     layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT; 
     titleTextView.setLayoutParams(layoutParams); 
     titleTextView.setGravity(Gravity.CENTER_HORIZONTAL); 
    } catch (Exception e) { 
     //"Error!" 
    } 

Điều quan trọng là TextView trong Thanh công cụ có tính chiều rộng "Wrap Nội dung", vì vậy chúng ta cần phải thay đổi nó thành "Match Parent". (Xem thêm về phản ánh này here)

Tested trên Android 5.1.1 và Android 4.3 (nên làm việc khá nhiều ở khắp mọi nơi)

+1

Tôi tình cờ làm việc trên cùng một vấn đề. Việc căn giữa tiêu đề tùy chỉnh 'TextView' trong một' Thanh công cụ' có vẻ như nó sẽ hoạt động, nhưng vì lý do nào đó 'layout_gravity =" center "' không tập trung vào văn bản trong trường hợp này. Văn bản 'TextView' được căn phải. Có khả năng là một lỗi. – Ryan

+0

@Ryan tuyệt vời bắt, thích nó! Cố định câu trả lời của tôi và thử nghiệm nó trên Android 5.1.1 và android 4.3. Cảm ơn bạn đã thông báo! –

+0

câu trả lời cập nhật của bạn có vẻ như nó sẽ hoạt động, nhưng tôi ghét phải sử dụng sự phản chiếu. Quá tệ không có cách tiếp cận hợp lý hơn cho vấn đề này. – Ryan

43

Có một thuộc tính expandedTitleGravity mà bạn có thể sử dụng với CollapsingToolbarLayout để tập trung tiêu đề mở rộng bản văn. Thêm phần này vào CollapsingToolbarLayout của bạn:

app:expandedTitleGravity="bottom|center_horizontal" 
+4

Câu trả lời hoàn hảo :) –

+0

câu trả lời thông minh :) –

10

Trong trường hợp sử dụng của tôi, tôi đặt app:titleEnabled false, tôi không cần nó anyway. Sau đó, trọng lực của tôi được tôn trọng đúng cách trong bố cục của Thanh công cụ.

+0

Tôi muốn thanh công cụ tùy chỉnh hiển thị tiêu đề ở giữa. bằng cách thiết lập thuộc tính này trong CollapsingToolbarLayout đã giúp tôi với yêu cầu của tôi. Cảm ơn rất nhiều. – Jigar

+0

tốt và đơn giản. –

0

Như Nguyễn Hoàng Anh đã nói ở trên, đặt app:titleEnabled thành sai làm việc như một sự quyến rũ.

Với tùy chọn đó được kích hoạt, sau khi một số đào với thanh tra viên bố trí, nghi ngờ giấu tên-view luôn thêm vào trước các TextView bên trong Toolbar, ngay sau nút 'Up' (nếu nó được kích hoạt).

Vì vậy, mặc dù bố cục bố cục hoạt động chính xác, một số chế độ xem đáng ngờ chiếm toàn bộ không gian bên trong của Toolbar.

1

Trong trường hợp bạn đang cố gắng tập trung tiêu đề trong trạng thái thu gọn bạn có thể sử dụng

android:paddingEnd="70dp" 
android:paddingRight="70dp" 

như thế này:

<android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingEnd="70dp" 
      android:paddingRight="70dp" 
      app:collapsedTitleGravity="center_horizontal"   
      app:expandedTitleGravity="start" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

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

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

     </android.support.design.widget.CollapsingToolbarLayout> 
Các vấn đề liên quan