Có ai biết cách tạo Chế độ xem bị đảo ngược không, tôi có ProgressBar nằm ngang và tôi muốn nó sang phải sang trái thay vì từ trái sang phảiTiến trình từ phải sang tráiBar?
Trả lời
Tạo lớp con của chế độ xem thanh tiến trình bình thường và triển khai phương pháp onDraw để xoay canvas trước khi vẽ:
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.rotate(180,<CenterX>,<CenterY>);
super.onDraw(canvas);
canvas.restore();
}
Điều này cần thực hiện thủ thuật.
public class inverseSeekBar extends ProgressBar {
public inverseSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public inverseSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public inverseSeekBar(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected synchronized void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.save();
//now we change the matrix
//We need to rotate around the center of our text
//Otherwise it rotates around the origin, and that's bad.
float py = this.getHeight()/2.0f;
float px = this.getWidth()/2.0f;
canvas.rotate(180, px, py);
//draw the text with the matrix applied.
super.onDraw(canvas);
//restore the old matrix.
canvas.restore();
}}
<com.hlidskialf.android.widget.inverseSeekBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75"
/>
mypackage: com.test.testProgressBar
Tuyệt vời! Điều này hoạt động hoàn hảo, cảm ơn! – Tom
Bạn không cần phải xoay toàn bộ View
.
Chỉ cần sử dụng a single xml attribute trong my_progress_drawable.xml
của bạn:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@android:id/background"
android:drawable="@drawable/my_background"/>
<item android:id="@android:id/progress">
<clip
android:drawable="@drawable/my_right_to_left_progress"
android:gravity="right" /> <!-- Clip the image from the RIGHT -->
</item>
</layer-list>
The documentation cho chúng ta biết gravity="right"
thực hiện điều này:
Đặt các đối tượng ở rìa bên phải của thùng chứa của nó, chứ không phải thay đổi kích thước của nó. Khi clipOrientation là "nằm ngang", việc cắt xảy ra ở phía bên trái của đối tượng có thể vẽ được.
Đừng ghi đè onDraw()
. Triển khai này ổn định hơn trên các phiên bản Android khác nhau.
Thật không may, không thể đặt trọng số của ClipDrawable
theo chương trình mà không cần gọi constructor.
Đối với chủ đề holo mà sử dụng
Thậm chí còn dễ dàng hơn. Bạn có thể chỉ cần gọi phương thức sau và sau đó nó được xoay và hoạt động theo cách bạn muốn.
progressBar.setRotation(180);
Một ví dụ:
nhờ cho câu trả lời –
phải là câu trả lời tốt nhất cho đến nay –
tai nạn ứng dụng của tôi ... – Hamidreza
Cos Tôi lười biếng tôi chỉ cần thêm hai dòng sau vào seekbar
xml:
android:layoutDirection="rtl"
android:mirrorForRtl="true"
Bất kỳ nhược điểm này?
Bạn có thể lật một cái nhìn trong xml sử dụng scaleX hoặc scaleY thuộc tính
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleX="-1"/>
Đây phải là câu trả lời hay nhất –
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:layout_margin="8dp"
android:layoutDirection="rtl"
android:progress="80" />
- 1. Có thể di chuyển thanh tiến trình từ phải sang trái dựa trên giá trị âm trong Twitter Bootstrap không?
- 2. Nhận thông báo tiến bộ từ một tiến trình con
- 3. Làm cách nào để chuyển giá trị tiến trình từ chuỗi này sang hoạt động khác?
- 4. LinearLayout được điền từ phải sang trái
- 5. Chức năng Haskell từ trái sang phải
- 6. Tiến trình báo cáo của BackgroundWorker từ Lớp ngoài?
- 7. Thanh tiến trình dọc
- 8. Tiến trình QT PythonBar
- 9. Cập nhật tiến trình trong Parallel.For() vòng
- 10. Báo cáo tiến trình tải lên từ node.js
- 11. Thanh tiến trình trong VBA Excel
- 12. Thanh tiến trình xoay Java từ sự cố EDT
- 13. lập trình tiến hóa
- 14. thanh tiến trình wxPython
- 15. Hộp thoại tiến trình Android
- 16. Ẩn tên tệp từ trang tiến trình Thiết lập Inno
- 17. Ngăn chặn đầu ra từ tiến trình con.Popen
- 18. Phát hiện tên người dùng từ ID tiến trình
- 19. jquery chuyển trang trình bày từ trái sang phải và quay lại
- 20. Trình duyệt webkit đẩy một viên đạn sang bên phải
- 21. Tiến trình tiến hành WPF với Databinding giá trị
- 22. Phát triển ứng dụng Android từ phải sang trái
- 23. Thanh tiến trình Android DialogFragment
- 24. Tiến trình thực hiện như người dùng Mac OS X hiện tại, không phải là root
- 25. Phải sang trái UILabels
- 26. Thanh tiến trình cho AVAssetExportSession
- 27. Tiến trình phát lại avaudioplayer
- 28. Cách tạo thanh tiến trình
- 29. ngôn ngữ từ phải sang trái trong Python
- 30. Loại suy luận từ phải sang trái đoạn mã
ngôn ngữ gì? Nền tảng gì? API gì? – EboMike
Tại sao bạn cần thanh tiến trình RTL? Tất cả các thanh tiến trình tôi đã nhìn thấy đi từ trái sang phải. –
Chúng tôi chỉ có thể trả lời các câu hỏi giả mã với mã giả ... nếu không, vui lòng nêu rõ ý kiến của EboMike yêu cầu. – BoltClock