2012-01-03 19 views
6

Quiero configurar las esquinas redondeadas sin xml. ¿Cómo puedo hacerlo en código java?Cómo establecer radios de esquina para el botón en código java?

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

Traté de escribir b.setCornerRadius (3.0f), pero no está definido para el objeto de botón. Gracias.

+0

echar un vistazo a esto: http://stackoverflow.com/questions/6003382/how-can-i-work-around-android-issue-9161-where-bottomrightradius-and-bottomleft –

Respuesta

4

crear una forma en la carpeta estirable y establecer el radio deseado y establecer este estirable como fondo a su botó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

Hola Gabi , gracias por la respuesta. Creé el archivo xml mientras escribía, pero ¿cómo puedo recibir una referencia al rectángulo en el código? Supongo que es algo así como b.setBackground (getResources(). ????). ¿Qué escribo en lugar de ?? –

+0

solo necesita obtener el dibujable (que es el nombre de este xml) y establecer como fondo para su botón (si lo hace desde el código) o solo el fondo en xml el nombre de su xml –

+2

Si se nombra el xml "some_drawable.xml", puede hacerlo a través de lo siguiente: 'b.setBackgroundResource (R.drawable.some_drawable);' – Stunner

0

consulte la documentación de Shape Drawable

+0

Hola Clemp6r, ahora vi el enlace, pero todavía no entiendo qué debería escribir exactamente. Si puede escribir algún ejemplo o alguna explicación, por favor. Gracias. –

+0

El ejemplo de @gabi es correcto. Cree un archivo XML como su ejemplo y aplique el dibujable resultante en java con button.setBackgroundResource (R.drawable.the_drawable_name). – clemp6r

25

Uso GradientDrawable

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

cómo asignar el 'gdDefault' al botón? – Lisitso

+1

anyView.setBackGroundDrawable (gdDefault); – Ndroid

0

Pruebe setGradientRadius(). setCornerRadius() establece un tamaño incorrecto.

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