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.


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.


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.


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

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


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>

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.