2012-04-12 17 views
86

Ich frage mich, ob ich Rechteck in XML zeichnen kann. Ich weiß, wie mit der drawRect-Methode programmgesteuert gezeichnet wird.Kann ich ein Rechteck in XML zeichnen?

+0

sagt XML bedeutet alles und nichts, d. H. Irgendetwas ... – ShinTakezou

+0

Was ist der Zweck der Verwendung von XML? drawRect arbeitet mit Canvas, das normalerweise beim Erstellen benutzerdefinierter Ansichten verwendet wird. – noob

+0

Ich stimme völlig mit @Creator überein, wir benutzen Canvas nur selten, wenn es etwas komplizierter ist. Die XML-Version ermöglicht es, den Hintergrund über die gesamte App für bestimmte UI-Elemente zu ändern, da die Attribute an einem Ort definiert sind. –

Antwort

167

Ja, Sie können, und hier ist, den ich früher gemacht:

<?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 ziehbar Ordner erstellen, und fügen Sie den obigen Code, speichern Sie es als rectangle.xml.

Um es in einem Layout zu verwenden, würden Sie das Attribut android:background auf die neue Zeichenform setzen. Die von uns definierte Form hat keine Dimensionen und nimmt daher die Dimensionen der Ansicht an, die im Layout definiert ist.

setzen sie also alle 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 für ImageViews android:src verwenden würden. Dies bedeutet, dass Sie das Rechteck als Hintergrund für ListViews, TextViews usw. verwenden könnten.

+1

Wie würde jemand dazu kommen, es so zu machen, dass die Farbe von dem Android-Layout aus eingestellt werden kann, wo wir machen? – kobihudson

+0

Ich denke, du kannst keine ID dafür hinzufügen –

24

erstellen rectangle.xml mit Form Drawable Wie diese setzen sich in Ihrem Drawable Folder ...

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

steckte es in zu einem ImageView

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

hoffe, dies wird Ihnen helfen.

+0

Vielen Dank. Es ist nützlich. – user1301568

14

Schnelle und schmutzige Art und Weise:

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

versuchen, diese

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

Ausgang

enter image description here

1

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