Posso disegnare un rettangolo in XML?


118

Mi chiedo se posso disegnare un rettangolo in XML. So come disegnare usando il metodo drawRect a livello di codice.


1
dire XML significa tutto e niente, cioè niente ...
ShinTakezou

Qual è lo scopo dell'utilizzo di XML? drawRect funziona su Canvas, che viene solitamente utilizzato nella creazione di visualizzazioni personalizzate.
noob

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

@GrahamSmith ho chiesto lo scopo, in modo che io possa sapere cosa voleva fare con questo. Potresti usare raramente una tela, l'ho usata molte volte nello sviluppo di giochi. Niente di essere d'accordo o in disaccordo qui.
noob

@ creator scusa, penso di aver interpretato male il tono del commento come "perché dovresti disturbarti?". Mie scuse.
Graham Smith

Risposte:


229

Sì, puoi ed eccone uno 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 sopra, quindi salvarlo come rectangle.xml.

Per usarlo all'interno di un layout dovresti impostare l' android:backgroundattributo sulla nuova forma disegnabile. La forma che abbiamo definito non ha alcuna dimensione, quindi assumerà le dimensioni della Vista definita nel layout.

Quindi mettendo tutto insieme:

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

Finalmente; puoi impostare questo rettangolo come sfondo di qualsiasi vista, anche se per ImageView useresti android:src. Ciò significa che puoi utilizzare il rettangolo come sfondo per ListViews, TextViews ... ecc.


1
Come farebbe qualcuno a fare in modo che il colore possa essere impostato dal layout Android in cui creiamo <View?
kobihudson

Penso che non puoi aggiungere l'ID per questo
Moses Aprico

come cambiare il colore del tratto in modo programmatico?
Zahidul

34

Crea rectangle.xmlusando Shape Drawable Come questo messo nella tua cartella Drawable ...

<?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 file ImageView

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

Spero che questo ti possa aiutare.


21

Modo veloce e sporco:

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

8

prova questo

                <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>

produzione

inserisci qui la descrizione dell'immagine


2

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>

0

crea file di risorse in drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#3b5998" />
<cornersandroid:radius="15dp"/>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.