Puis-je dessiner un rectangle en XML?

118

Je me demande si je peux dessiner un rectangle en XML. Je sais comment dessiner en utilisant la méthode drawRect par programme.

user1301568
la source
1
dire XML signifie tout et rien, c'est-à-dire n'importe quoi ...
ShinTakezou
Quel est le but d'utiliser XML? drawRect fonctionne sur Canvas, qui est généralement utilisé pour créer des vues personnalisées.
noob
Je suis complètement d'accord avec @Creator, nous utilisons rarement Canvas à moins que ce ne soit pour quelque chose d'un peu plus complexe. La version XML facilite la modification de l'arrière-plan sur l'ensemble de l'application pour des éléments d'interface utilisateur particuliers, car les attributs sont définis à un emplacement.
Graham Smith
@GrahamSmith J'ai demandé le but, afin que je puisse savoir ce qu'il voulait en faire. Vous pourriez rarement utiliser un canevas, je l'ai utilisé plusieurs fois pour développer des jeux. Rien pour être d'accord ou en désaccord ici.
noob
@creator désolé, je pense que j'ai mal interprété le ton du commentaire comme "pourquoi vous dérangeriez-vous?". Mes excuses.
Graham Smith

Réponses:

229

Oui, vous pouvez et en voici une que j'ai faite plus tôt:

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

Vous pouvez créer un nouveau fichier XML dans le dossier dessinable, ajouter le code ci-dessus, puis l'enregistrer sous rectangle.xml.

Pour l'utiliser dans une mise en page, définissez l' android:backgroundattribut sur la nouvelle forme dessinable. La forme que nous avons définie n'a aucune dimension et prendra donc les dimensions de la vue définie dans la mise en page.

Donc, mettre tout cela ensemble:

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

Finalement; vous pouvez définir ce rectangle pour être l'arrière-plan de n'importe quelle vue, bien que vous utilisiez pour ImageViews android:src. Cela signifie que vous pouvez utiliser le rectangle comme arrière-plan pour ListViews, TextViews ... etc.

Graham Smith
la source
1
Comment quelqu'un ferait-il pour que la couleur puisse être définie à partir de la mise en page Android où nous créons le <View?
kobihudson
Je pense que vous ne pouvez pas ajouter d'ID pour cela
Moses Aprico
comment changer la couleur du trait par programme?
Zahidul le
34

Créez en rectangle.xmlutilisant Shape Drawable comme ceci mis dans votre dossier 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>

le mettre dans un ImageView

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

J'espère que ceci vous aidera.

N.Droid
la source
21

Manière rapide et sale:

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

essaye ça

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

production

entrez la description de l'image ici

AGTHAMAIS
la source
2

Utilisez ce code

<?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>
Faxriddin Abdullayev
la source
0

créer un fichier de ressources dans un dessin

<?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"/>

Muhammad Kamran
la source