2012-01-03 8 views
6

Voglio impostare gli angoli arrotondati senza xml. Come posso farlo nel codice java?Come impostare i raggi degli angoli per il pulsante nel codice java?

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

Ho cercato di scrivere b.setCornerRadius (3.0f), ma non è definito per oggetto pulsante. Grazie.

+0

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

risposta

4

creare una forma nella cartella drawable e impostare il raggio desiderato e impostare questa disegnabile come sfondo al pulsante:

<?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 , Grazie per la risposta. Ho creato il file xml come hai scritto, ma come posso ricevere il riferimento al rettangolo nel codice? Suppongo che sia qualcosa come b.setBackground (getResources(). ????). Quello che scrivo invece di ?? –

+0

hai solo bisogno di ottenere il drawable (drawable è il nome di questo xml) e set è come sfondo del tuo pulsante (se fai questo dal codice) o solo lo sfondo in xml il nome del tuo xml –

+2

Se il xml è chiamato "some_drawable.xml", puoi farlo tramite: 'b.setBackgroundResource (R.drawable.some_drawable);' – Stunner

0

vedere la documentazione per Shape Drawable

+0

Ciao Clemp6r, ho visto ora il collegamento, ma ancora non capisco cosa dovrei scrivere esattamente. Se puoi scrivere qualche esempio o qualche spiegazione per favore. Grazie. –

+0

L'esempio di @gabi è giusto. Creare un file XML come il suo esempio e applicare il disegnabile risultante in java usando button.setBackgroundResource (R.drawable.the_drawable_name). – clemp6r

25

Usa GradientDrawable

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

come assegnare "gdDefault" al pulsante? – Lisitso

+1

anyView.setBackGroundDrawable (gdDefault); – Ndroid

0

Prova setGradientRadius(). setCornerRadius() imposta dimensioni errate.

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