2012-04-12 18 views
86

Mi chiedo se posso disegnare il rettangolo in XML. So come disegnare usando il metodo drawRect a livello di programmazione.Posso disegnare il rettangolo in XML?

+0

dicendo che XML significa tutto e niente, ad esempio ... – ShinTakezou

+0

Qual è lo scopo dell'utilizzo di XML? drawRect funziona su Canvas, che di solito viene utilizzato per creare visualizzazioni personalizzate. – noob

+0

Sono completamente in diagonale con @Creator, raramente utilizziamo Canvas a meno che non sia per qualcosa di un po 'più complesso. La versione XML semplifica la modifica dello sfondo dell'intera app per particolari elementi dell'interfaccia utente, come risultato della definizione degli attributi in un'unica posizione. –

risposta

167

Sì, è possibile e qui è quello che ho fatto in precedenza:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape"> 
    <stroke android:width="2dp" android:color="#ff207d94" /> 
    <padding android:left="2dp" 
     android:top="2dp" 
     android:right="2dp" 
     android:bottom="2dp" /> 
    <corners android:radius="5dp" /> 
    <solid android:color="#ffffffff" /> 
</shape> 

È possibile creare un nuovo file XML all'interno della cartella drawable, e aggiungere il codice di cui sopra, quindi salvarlo come rectangle.xml.

Per utilizzarlo all'interno di un layout, impostare l'attributo android:background sulla nuova forma estraibile. La forma che abbiamo definito non ha alcuna dimensione e pertanto prenderà le dimensioni della vista che è definita nel layout.

Quindi mettere tutto insieme:

<View 
    android:id="@+id/myRectangleView" 
    android:layout_width="200dp" 
    android:layout_height="50dp" 
    android:background="@drawable/rectangle"/> 

Infine; è possibile impostare questo rettangolo come sfondo di qualsiasi vista, sebbene per ImageViews si utilizzi android:src. Ciò significa che puoi usare il rettangolo come sfondo per ListViews, TextViews, ecc.

+1

Come farebbe qualcuno a fare in modo che il colore possa essere impostato dal layout di Android in cui facciamo il kobihudson

+0

Penso che non si possa aggiungere l'id per esso –

24

Crea rectangle.xml utilizzando Forma Drawable come non mettere al tuo Drawable cartella ...

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="@android:color/transparent"/> 
    <corners android:radius="12px"/> 
    <stroke android:width="2dip" android:color="#000000"/> 
</shape> 

metterlo in un ImageView

<ImageView 
android:id="@+id/rectimage" 
android:layout_height="150dp" 
android:layout_width="150dp" 
android:src="@drawable/rectangle"> 
</ImageView> 

Spero che questo vi aiuterà.

+0

Grazie mille. È utile. – user1301568

14

modo rapido e sporco:

<View 
    android:id="@+id/colored_bar" 
    android:layout_width="48dp" 
    android:layout_height="3dp" 
    android:background="@color/bar_red" /> 
7

provare questa uscita

   <TableRow 
        android:layout_width="match_parent" 
        android:layout_marginTop="5dp" 
        android:layout_height="wrap_content"> 

        <View 
         android:layout_width="15dp" 
         android:layout_height="15dp" 
         android:background="#3fe1fa" /> 

        <TextView 
         android:textSize="12dp" 
         android:paddingLeft="10dp" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:text="1700 Market Street" 
         android:id="@+id/textView8" /> 
       </TableRow> 

enter image description here

1

Usa questo codice

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

<corners 
    android:bottomLeftRadius="5dp" 
    android:bottomRightRadius="5dp" 
    android:radius="0.1dp" 
    android:topLeftRadius="5dp" 
    android:topRightRadius="5dp" /> 

<solid android:color="#Efffff" /> 

<stroke 
    android:width="2dp" 
    android:color="#25aaff" /> 

</shape> 
Problemi correlati