2017-06-04 21 views
14

Tôi đang cố gắng thêm ProgressBar trên đầu trang của Button (cả hai đều nằm trong một số ConstraintLayout).Android ConstraintLayout - Đặt một chế độ xem lên trên một chế độ xem khác

<Button 
    android:id="@+id/sign_in_button" 
    android:layout_width="280dp" 
    android:layout_height="75dp" 
    android:layout_marginBottom="75dp" 
    android:layout_marginTop="50dp" 
    android:text="@string/sign_in" 
    android:textColor="@color/white" 
    android:textSize="22sp" 
    android:textStyle="bold" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/passwordEditText" 
    app:layout_constraintVertical_bias="0.0"/> 

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_constraintTop_toTopOf="@+id/sign_in_button" 
    android:layout_marginTop="8dp" 
    app:layout_constraintBottom_toBottomOf="@+id/sign_in_button" 
    android:layout_marginBottom="8dp" 
    app:layout_constraintVertical_bias="0.5" 
    android:layout_marginLeft="8dp" 
    app:layout_constraintLeft_toLeftOf="@+id/sign_in_button" 
    android:layout_marginRight="8dp" 
    app:layout_constraintRight_toRightOf="@+id/sign_in_button"/> 

Nhưng ngay cả sau khi gọi bringToFront trên ProgressBar trong onCreate, nó luôn luôn nằm phía sau Button.

ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar); 
progressBar.bringToFront(); 
+0

điều này thật lạ, tôi cố gắng chơi một chút với bố cục của bạn, thậm chí đảo ngược chuỗi sao cho thanh tiến trình bị ràng buộc với văn bản chỉnh sửa và nút đến thanh tiến trình nhưng nút dường như luôn ở trên cùng thanh tiến trình – lelloman

+0

Bạn có thể sử dụng FrameLayout không? Cung cấp cho nó một thử, biết rằng trong FrameLayout, z-index được đưa ra bởi thứ tự bên trong bố trí (vì vậy Button 1st, Progress 2) –

+0

nơi passwordEditText của bạn là tôi đã kiểm tra mà không có ứng dụng: layout_constraintTop_toBottomOf = "@ + id/passwordEditText" tôi có thể thấy thanh tiến trình trên đầu trang u có thể cung cấp mật khẩu đóEditText – Pavan

Trả lời

25

Đặt độ cao trên ProgressBar; 2dp dường như hoạt động.

android:elevation="2dp" 

Bạn cũng có thể thử thiết translationZ như đề xuất trong câu trả lời chấp nhận để một similar question.

Tôi cũng đã xem qua số this answer làm phương án thay thế.

+3

Nhưng 'elevation' và' translationZ' chỉ dành cho API> = 21, còn API cũ hơn thì sao? – q126y

+0

@ q126y Tôi không nghĩ rằng điều này đã trở thành vấn đề cho đến API 21, vì vậy các API cũ hơn không cần điều này. Tôi đã thử nó trên một trình giả lập chạy API 17 và thanh tiến trình xuất hiện trên đầu trang như mong đợi. – Cheticamp

+0

@Cheticamp vậy Cách xử lý này? AS đang đưa ra cảnh báo rằng nó chỉ hoạt động ở cấp API 21 trở lên. –

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