2012-01-03 35 views
6

Tôi muốn đặt các góc được làm tròn không có xml. Làm thế nào tôi có thể làm điều đó trong mã java?Cách đặt bán kính góc cho nút trong mã java?

Button b = new Button (this); 
b.set???? (??) ; 

Tôi đã cố gắng viết b.setCornerRadius (3.0f) nhưng không xác định đối tượng nút. Cảm ơn.

+0

có một cái nhìn vào điều này: http://stackoverflow.com/questions/6003382/how-can-i-work-around-android-issue-9161-where-bottomrightradius-and-bottomleft –

Trả lời

4

tạo ra một hình dạng trong thư mục drawable của bạn và thiết lập bán kính mong muốn và thiết lập drawable này làm nền để nút của bạn:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
         
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="5dip"/> 
     </shape> 
    </item> 
</layer-list> 
+0

Hi Gabi , cảm ơn câu trả lời. Tôi đã tạo tệp xml như bạn đã viết, nhưng làm cách nào tôi có thể nhận được tham chiếu đến hình chữ nhật trong mã? Tôi cho rằng nó giống như b.setBackground (getResources(). ????). Những gì tôi viết thay vì ?? –

+0

bạn chỉ cần có được drawable (drawable là tên của xml) và thiết lập làm nền cho nút của bạn (nếu bạn làm điều này từ mã) hoặc chỉ nền trong xml tên xml của bạn –

+2

Nếu xml được đặt tên "some_drawable.xml", bạn có thể làm điều đó thông qua những điều sau đây: 'b.setBackgroundResource (R.drawable.some_drawable);' – Stunner

0

Xem tài liệu cho Shape Drawable

+0

Hi Clemp6r, bây giờ tôi đã thấy liên kết, nhưng tôi vẫn không hiểu tôi nên viết chính xác cái gì. Nếu bạn có thể viết một số ví dụ hoặc giải thích một số xin vui lòng. Cảm ơn. –

+0

Ví dụ về @gabi là đúng. Tạo một tệp XML như ví dụ của mình và áp dụng kết quả có thể vẽ trong java bằng cách sử dụng button.setBackgroundResource (R.drawable.the_drawable_name). – clemp6r

25

Sử dụng GradientDrawable

GradientDrawable gdDefault = new GradientDrawable(); 
gdDefault.setColor(bgColor); 
gdDefault.setCornerRadius(cornerRadius); 
gdDefault.setStroke(strokeWidth, strokeColor); 
+0

cách gán 'gdDefault' cho nút? – Lisitso

+1

anyView.setBackGroundDrawable (gdDefault); – Ndroid

0

Hãy thử setGradientRadius(). setCornerRadius() đặt kích thước sai.

GradientDrawable drawable = (GradientDrawable)image.getBackground(); 
drawable.setGradientRadius(radiuspx); 
Các vấn đề liên quan