2010-07-06 37 views
18

Tôi đã có một tìm kiếm tốt cho điều này trên đây và không thể tìm thấy một giải pháp.Làm cách nào để đặt độ rộng tối thiểu (trong ký tự) cho một TextView?

Tôi có một TextView trong RelativeLayout chứa số nguyên. Số sẽ nằm trong khoảng từ 1 đến 99 - bất kỳ ai có thể cho tôi biết cách kích thước TextView sao cho chiều rộng của nó luôn luôn là chiều rộng của chuỗi "99" ngay cả khi nó chỉ chứa "1"?

Tôi cần điều này vì vị trí của các thành phần ở bên phải này TextView phụ thuộc vào chiều rộng của nó, vì vậy tất cả đều là vị trí tùy thuộc vào số lượng chữ số mà TextView chứa.

Tôi không quan tâm nếu điều này được thực hiện trong XML hay mã - Tôi chỉ muốn tránh việc có để đặt chiều rộng của một TextView tính bằng pixel!

Cảm ơn mọi giải pháp có thể có; Vui lòng hỏi nếu tôi đã bỏ lỡ bất kỳ thông tin quan trọng nào trong số !

Trả lời

46

thử điều này:

android:layout_width="wrap_content" 
android:minEms="2" 
+0

Cảm ơn, trông giống như một 'un! –

+0

Điều đó hoạt động giống như ma thuật. –

+1

bạn cũng có thể muốn thêm android: gravity = "center" – Shyri

-2

Sử dụng android: maxLength thuộc tính của TextView.Please đọc this

+0

Xin chào, cảm ơn câu trả lời của bạn, nhưng đó là độ dài tối thiểu tôi thực sự cần. :-) –

0

Tôi nghĩ rằng bạn đang tìm kiếm getTextBounds (phương pháp) trong lớp sơn. Không thử bản thân mình tho.

16

Ems hoạt động nếu phông chữ của bạn là monospace. Đối với phông chữ tỷ lệ, bạn muốn nó có chiều rộng của hai '0, không phải hai' m. Bạn có thể quay lại TextPaint.measureText như sau:

float measureText = zip.getPaint().measureText("00000"); 
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText); 
+0

Làm việc như ảo thuật! Cảm ơn bạn rất nhiều vì đã chia sẻ đoạn mã này. :) –

+1

Thiết lập ems đã không làm việc cho tôi, nhưng điều này đã làm. Cảm ơn pforhan :) – jayanth

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