Trong ứng dụng của chúng tôi, chúng ta cần một thanh tiến trình không xác định, như vậy:Xóa đệm theo chiều ngang thanh tiến trình
Chúng ta có thể đạt được điều này bằng cách thiết lập một biên độ tiêu cực đối với ProgressBar, như thế này:
<ProgressBar
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:marginTop="-7dp"
android:visibility="@{loading ? View.VISIBLE : View.GONE}" />
NHƯNG vì ConstraintLayout không hỗ trợ lợi nhuận tiêu cực, nó sẽ giống như thế này:
OK, lợi nhuận âm là một hack. Hãy thay thế nó bằng một hack khác, phải không? Hãy giới thiệu giao diện tùy chỉnh của chúng tôi CustomProgressBar
, kéo dài ProgressBar
và ghi đè phương pháp onDraw
của nó, như thế này:
@Override
protected void onDraw(Canvas canvas) {
int marginTop = dpToPx(7);
canvas.translate(0, -marginTop);
super.onDraw(canvas);
}
Nhưng tất cả điều này có mùi như mã xấu. Phải có một giải pháp tốt hơn! Bạn sẽ đề xuất điều gì?
Cảm ơn, điều đó thực sự đã thực hiện thủ thuật! Tôi thay đổi câu trả lời một chút bằng cách thiết lập 'app: layout_constraintGuide_begin =" 9dp "' trên hướng dẫn và chỉ thiết lập 'app: layout_constraintTop_toTopOf =" @ + id/guideline "' (không ràng buộcBottom hoặc padding) cho thanh tiến trình - hoạt động. Vẫn cảm thấy bị hack với tôi, nhưng tôi cảm thấy đó là lựa chọn tốt nhất hiện nay. – mreichelt