2010-01-23 10 views
84

Sul sito web di Android, c'è un section about color drawables. La definizione di queste drawable in XML è simile al seguente:Come si imposta il raggio dell'angolo arrotondato di un disegno a colori usando xml?

<resources> 
    <drawable name="solid_red">#f00</drawable> 
    <drawable name="solid_blue">#0000ff</drawable> 
    <drawable name="solid_green">#f0f0</drawable> 
</resources> 

In Java API, hanno thr seguente metodo per definire gli angoli arrotondati:

setCornerRadius(float radius) 

C'è un modo per impostare gli angoli arrotondati in xml ?

+0

Per impostare gli angoli dal codice, vedere (Disegni sfumati): http://stackoverflow.com/questions/8709595/how-to-set-corner-radiuses-for-the-button-in-java-code – samosaris

+1

Questo potrebbe aiuto http://www.gadgetsaint.com/tips/rounded-corners-views-layouts-android/#.WPz2QVN97BI – ASP

risposta

236

Utilizzare il tag <shape> per creare un drawable in XML con angoli arrotondati. (Puoi fare altre cose con il tag shape come definire anche un gradiente di colore).

Ecco una copia di un file XML che sto usando in una delle mie applicazioni per creare un drawable con uno sfondo bianco, bordo nero e gli angoli arrotondati: risposta

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>  

    <stroke android:width="3dp" 
      android:color="#ff000000" /> 

    <padding android:left="1dp" 
      android:top="1dp" 
      android:right="1dp" 
      android:bottom="1dp" /> 

    <corners android:bottomRightRadius="7dp" 
      android:bottomLeftRadius="7dp" 
      android:topLeftRadius="7dp" 
      android:topRightRadius="7dp" /> 
</shape> 
+1

dove salvare questo file e come ottenerlo nel mio codice java? grazie – shyam

+6

salvarlo come un file xml nella directory drawable, quindi utilizzarlo come si userebbe qualsiasi disegnabile (icona o file di risorse) utilizzando il nome della risorsa (R.drawable.your_xml_name) – Guillaume

+21

in questo caso particolare tutti i raggi sono gli stessi, così si potrebbe avere Android utilizzata: raggio = "7dp" –

18

di mbaird funziona bene. Basta essere consapevoli che sembra esserci un bug in Android (2.1 almeno), che se si imposta il raggio di ogni singolo angolo su 0, forza tutti gli angoli a 0 (almeno è il caso con le unità "dp"; provalo con qualsiasi altra unità).

Avevo bisogno di una forma in cui gli angoli superiori fossero arrotondati e gli angoli inferiori fossero quadrati. Ho ottenuto questo risultato impostando gli angoli che volevo essere quadrati su un valore leggermente più grande di 0: 0.1dp. Ciò rende ancora gli angoli quadrati, ma non impone agli altri angoli un raggio di 0.

+0

hai appena scritto 0.1 dp? funziona, ho bisogno anche degli angoli arrotondati superiori e quelli quadrati più bassi, lo stesso problema con cui ho usato solo 1 dp, negli angoli quadrati e 10dp su quelli rotondi, hai ragione è ancora evidente, ma mi dà il 90% di quello che ho voglio, secondo l'impostazione della documentazione 0 sugli angoli non arrotondati avrebbe dovuto funzionare. – codeScriber

+0

Che ragazzo fantastico sei. Funziona come un fascino. Mi ha salvato un paio d'ore ;-) – Dude

+0

In realtà non è un bug, è nella documentazione: https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape – Tsuharesu

Problemi correlati