2012-01-03 9 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 –

答えて

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()。????)のようなものだと思います。私は代わりに何を書いているのですか? –

+0

drawable(drawableはこのxmlの名前)を取得するだけで、ボタンの背景に(コードからこれを行う場合)、またはxmlの背景だけをXMLの名前 –

+2

xmlに名前が付けられている場合'some_drawable.xml 'は、次のようにして行うことができます:' b.setBackgroundResource(R.drawable.some_drawable); ' – Stunner

0
+0

こんにちはClemp6r、私はリンクを見ましたが、私はまだ何を書くべきか分かりません。あなたはいくつかの例やいくつかの説明を記述することができればお願いします。ありがとう。 –

+0

@gabiの例が正しいです。彼の例のようなXMLファイルを作成し、button.setBackgroundResource(R.drawable.the_drawable_name)を使用して結果のドロワブルをjavaに適用します。 – clemp6r

25

使用GradientDrawable

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

'gdDefault'をボタンに割り当てる方法は? – Lisitso

+1

anyView.setBackGroundDrawable(gdDefault); – Ndroid

0
のドキュメントを参照してください。

setGradientRadius()を試してください。 setCornerRadius()は間違ったサイズを設定します。

GradientDrawable drawable = (GradientDrawable)image.getBackground(); 
drawable.setGradientRadius(radiuspx); 
関連する問題