2012-01-03 43 views
6

我想設置沒有xml的圓角。我怎樣才能在java代碼中做到這一點?如何在java代碼中設置按鈕的角點半徑?

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

我試圖編寫b.setCornerRadius(3.0f),但它是未定義的按鈕對象。 謝謝。

+0

看看這個:http://stackoverflow.com/questions/6003382/how-can-i-work-around-android-issue-9161-where-bottomrightradius-and-bottomleft – 2012-01-03 08:35:02

回答

4

在繪製文件夾中創建一個形狀並設置所需的半徑設置此繪製爲背景,以您的按鈕:

<?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

喜加比, 感謝你的回答。我在創建時創建了xml文件,但是如何在代碼中接收對矩形的引用?我想這是像b.setBackground(getResources()。)。我寫的是什麼而不是? – 2012-01-03 10:22:09

+0

您只需要獲取drawable(可繪製的是這個xml的名稱)並將其設置爲您的按鈕的背景(如果您是從代碼執行此操作)或者只是xml中的背景xml的名稱 – 2012-01-04 10:11:47

+2

如果xml被命名「some_drawable.xml」,你可以通過以下方法:'b.setBackgroundResource(R.drawable.some_drawable);' – Stunner 2013-04-24 22:24:02

0

查看文檔Shape Drawable

+0

您好Clemp6r,我現在看到了鏈接,但我仍然不明白我應該寫什麼。如果你能寫一些例子或一些解釋請。謝謝。 – 2012-01-03 10:31:05

+0

@gabi的例子是正確的。像他的例子一樣創建一個XML文件,並使用button.setBackgroundResource(R.drawable.the_drawable_name)在java中應用產生的drawable。 – clemp6r 2012-01-03 14:44:43

25

使用GradientDrawable

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

如何將「gdDefault」分配給按鈕? – Lisitso 2013-09-25 08:58:18

+1

anyView.setBackGroundDrawable(gdDefault); – Ndroid 2013-12-12 09:46:52

0

嘗試setGradientRadius()。 setCornerRadius()設置錯誤的大小。

GradientDrawable drawable = (GradientDrawable)image.getBackground(); 
drawable.setGradientRadius(radiuspx);