2012-10-07 11 views
25

Tôi đã sau TextView:Constrain drawableLeft và chiều cao drawableRight để chiều cao TextView của

<TextView 
    android:drawableLeft="@drawable/loading" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Updating Rates" /> 

Và kết quả là thế này:

Làm thế nào để thực hiện việc bốc tròn Constrain drawable tương ứng để chiều cao của nó phù hợp với chiều cao của văn bản?

Ngoài ra, nếu có thể, tôi muốn thêm khoảng cách giữa văn bản và hình ảnh.

Trả lời

22

Để thực hiện loading nhỏ hơn chỉ cần thực hiện những hình ảnh nhỏ hơn.

Hoặc sử dụng RelativeLayout và đặt tải trong ImageView và chia tỷ lệ.

Hoặc bạn có thể thêm đệm giữa drawables và văn bản sử dụng android:drawablePadding (hoặc setCompoundDrawablePadding()):

giải pháp
android:drawablePadding="3dp" 
+0

"Để làm cho hình ảnh nhỏ hơn" - Giúp tôi. Cảm ơn. – offset

+0

@offset thay đổi kích thước hình ảnh (Photoshop, GIMP, công cụ trực tuyến, ... v.v.) – JafarKhQ

+1

Đó là những gì tôi đã nói, tôi đã giảm hình ảnh và giải quyết được sự cố của tôi. – offset

0

Bạn chỉ cần khai báo hai ImageView giao diện riêng và TextView, và đặt chúng cho phù hợp

+1

Yea nhưng đôi khi drawableRight là cần thiết bên trong TextView cho người nghe nhấp chuột (như biểu tượng bộ chọn lịch). Vì vậy, đặt chúng một cách riêng biệt sẽ là một vấn đề. –

+0

Đặt chúng trong LinearLayout và đặt nhấp vào Bố cục. Đã giải quyết được vấn đề! – noob

0

A Better sẽ tạo ra một XML trong thư mục drawable và thêm hình ảnh vào XML này, và duy trì scaleType là "fitXY". Bây giờ bạn có thể làm cho XML này là drawableLeft.

+1

Bạn có thể thêm chi tiết khác không? Có thể một tệp XML mẫu? –

+1

Tôi đã thử điều này và nó không hoạt động. Bạn không thể đặt kích thước của một qua XML trong thư mục drawable. ScaleType = "fitXY" áp dụng cho ImageViews không thể vẽ được .. Tôi đã đi với việc chia tỷ lệ hình ảnh và đặt chúng vào các thư mục drawable-mdpi, drawable-xhdpi khác nhau. – Deemoe

7

Tôi nghĩ rằng tôi đã tìm thấy các giải pháp, nhưng hơi muộn

Drawable drawable = getResources().getDrawable(R.drawable.s_vit); 
drawable.setBounds(0, 0, (int)(drawable.getIntrinsicWidth()*0.5),(int)(drawable.getIntrinsicHeight()*0.5)); 
ScaleDrawable sd = new ScaleDrawable(drawable, 0, scaleWidth, scaleHeight); 
Button btn = findViewbyId(R.id.yourbtnID); 
btn.setCompoundDrawables(sd.getDrawable(), null, null, null); 
+0

scaleWidth và scaleHeight trong mã đó là gì? – Sly

1

giải pháp Ravi của làm việc cho tôi, nhưng trên một số thiết bị drawable đã biến mất. Sửa lỗi này bằng cách loại bỏ tỷ lệ.

int bound = (int) (drawable.getIntrinsicWidth() * 0.5); 
    drawable.setBounds(0, 0, bound, bound); 
    b.setCompoundDrawables(drawable, null, null, null);