22

Với API Lollipop mới, chúng tôi phải sử dụng Thanh công cụ nếu chúng tôi muốn cá nhân hóa khía cạnh thanh tác vụ.Tôi làm cách nào để đặt ProgressBar ở bên phải Thanh công cụ?

Thêm ProgressBar vào Thanh công cụ cũng đơn giản như thêm nó vào Nhóm xem thanh công cụ, as Chris Banes said.

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/material_green_500" 
    android:minHeight="?attr/actionBarSize" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <!-- Color is Brown 500 --> 
    <ProgressBar 
     android:id="@+id/toolbar_progress_bar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:indeterminateTint="#795548" 
     android:indeterminateTintMode="src_in"/> 

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

Nhưng làm thế nào chúng ta có thể đặt nó ở bên phải của Thanh công cụ, nó nằm ở đâu?

Thuộc tính layout_gravity dường như không được xác định cho Thanh công cụ. Đặt nó từ xml không có hiệu lực. Tôi đã cố gắng thay đổi chiều rộng của ProgressBar, không thành công.

Tôi phải làm gì?

EDIT: Có giải pháp về mặt ngữ pháp cho vấn đề này, hãy xem trả lời @mdelolmo cho điều đó.

+4

layout_gravity đang làm việc tốt trong appcompat 21.0.2 – Philio

+0

Awesome! Bạn nên làm cho câu trả lời đó. – doplumi

+0

Tôi tìm thấy trang này khi có cùng sự cố với bạn. layout_gravity thực sự là câu trả lời. Vấn đề của tôi và có thể là của bạn là Android studio tự động hoàn thành tuyên bố không có layout_gravity, nhưng nếu bạn chỉ cần gõ nó ra cho mình nó tìm thấy nó. – Gober

Trả lời

14

Tôi cũng đâm vào tường giống nhau, nhưng lập trình hoạt động:

Toolbar.LayoutParams layoutParams = new Toolbar.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      Gravity.TOP | Gravity.RIGHT); 

Trong đoạn của tôi, tôi sắp xếp nó vào đầu trang, để phù hợp với sự liên kết của menu.

+1

Tôi đã thử lập trình và có, nó hoạt động. Vấn đề là khai báo XML. Đã +1 vì đó là điều đáng nói đến, cảm ơn bạn! – doplumi

-5

Cách giải quyết để tạo bố cục hoàn toàn bằng xml sẽ thay thế nội dung thanh công cụ bằng bố cục tương đối của riêng bạn. Để làm điều đó, bạn cần giả mạo tiêu đề hoạt động (và cũng là biểu tượng điều hướng nếu bạn đang sử dụng một), nghĩa là lồng vào sau đây trong khối Thanh công cụ của bạn.

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/toolbar_height" 
     android:paddingRight="2dp" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:text="@string/app_name" 
      android:textColor="@android:color/white" 
      android:textSize="20sp" 
      android:fontFamily="sans-serif-medium" /> 

     <ProgressBar 
      android:id="@+id/toolbar_progress_bar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:indeterminateTint="#795548" 
      android:indeterminateTintMode="src_in" /> 

</RelativeLayout> 

Lưu ý rằng 20 giây sans-serif-medium là phông chữ được sử dụng trong thanh công cụ lollipop, bạn có thể cần điều chỉnh thông số chế độ xem văn bản để làm cho nó trông tự nhiên trong các phiên bản trước.

33

Bạn có thể thử điều này. Nó làm việc cho tôi. Chìa khóa ở đây là xác định layout_gravity trong xml: android:layout_gravity="right"

<android.support.v7.widget.Toolbar  
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/material_green_500" 
android:minHeight="?attr/actionBarSize" 
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

<!-- Color is Brown 500 --> 
<ProgressBar 
    android:id="@+id/toolbar_progress_bar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:indeterminateTint="#795548" 
    android:indeterminateTintMode="src_in" 
    android:layout_gravity="right" 
/> 

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

Ưu tiên sử dụng 'layout_gravity =" end "' cho tương thích từ phải sang trái. Tuy nhiên, thông báo này chỉ có sẵn từ API 17. – bryant1410

Các vấn đề liên quan