Kann ich ein Rechteck in XML zeichnen?


118

Ich frage mich, ob ich Rechtecke in XML zeichnen kann. Ich kann programmgesteuert mit der drawRect-Methode zeichnen.


1
XML zu sagen bedeutet alles und nichts, dh alles ...
ShinTakezou

Was ist der Zweck der Verwendung von XML? drawRect funktioniert auf Canvas, das normalerweise zum Erstellen benutzerdefinierter Ansichten verwendet wird.
Noob

Ich stimme @Creator nicht zu, wir verwenden Canvas nur selten, es sei denn, es handelt sich um etwas Komplexeres. Die XML-Version macht es einfach, den Hintergrund für bestimmte UI-Elemente in der gesamten App zu ändern, da die Attribute an einem Ort definiert werden.
Graham Smith

@GrahamSmith Ich habe nach dem Zweck gefragt, damit ich erfahren kann, was er damit machen wollte. Sie könnten selten eine Leinwand verwenden, ich habe sie oft verwendet, um Spiele zu entwickeln. Hier gibt es nichts zuzustimmen oder nicht zuzustimmen.
Noob

@creator Entschuldigung, ich glaube, ich habe den Ton des Kommentars falsch interpretiert als "Warum sollten Sie sich die Mühe machen?". Entschuldigen Sie.
Graham Smith

Antworten:


228

Ja, das kannst du und hier ist eine, die ich früher gemacht habe:

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

Sie können eine neue XML-Datei im Zeichenordner erstellen, den obigen Code hinzufügen und dann als rechteck.xml speichern.

Um es in einem Layout zu verwenden, setzen Sie das android:backgroundAttribut auf die neue Zeichenform. Die von uns definierte Form hat keine Abmessungen und übernimmt daher die Abmessungen der Ansicht, die im Layout definiert ist.

Also alles zusammen:

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

Schließlich; Sie können dieses Rechteck als Hintergrund für jede Ansicht festlegen, obwohl Sie es für ImageViews verwenden würden android:src. Dies bedeutet, dass Sie das Rechteck als Hintergrund für ListViews, TextViews usw. verwenden können.


1
Wie würde jemand vorgehen, um die Farbe über das Android-Layout festzulegen, in dem wir die <Ansicht erstellen?
Kobihudson

Ich denke, Sie können keine ID dafür hinzufügen
Moses Aprico

Wie kann man die Strichfarbe programmgesteuert ändern?
Zahidul

34

Erstellen rectangle.xmlmit Shape Drawable So legen Sie es in Ihrem Drawable- Ordner ab ...

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

lege es in ein ImageView

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

Hoffe das wird dir helfen.


20

Schneller und schmutziger Weg:

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

8

Versuche dies

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

Ausgabe

Geben Sie hier die Bildbeschreibung ein


2

Verwenden Sie diesen 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

Erstellen Sie eine Ressourcendatei 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"/>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.