2010-07-18 3 views
38

I definiert eine drawableWie kann ich eine XML-Form zeichnen?

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http//schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="#ffffffff" /> 
    <size android:width="60dp" 
     android:height="40dp" /> 
</shape> 

Aber wie es in der layout Definition zu benutzen?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       > 
    <ImageView 
     android:src="@drawable/ic_title" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     /> 
</LinearLayout> 

Ich sehe immer noch nur schwarzen Hintergrund.

Edited:

Es stellte sich heraus, dass ich ein : in der drawablexmlns Erklärung verpasst. Nun ist dieses Beispiel arbeitet in dem Lebkuchen-Gerät :)

+0

Alberne Frage, aber ist "ic_title" der Name des Zeichensatzes, den Sie definiert haben? Sie können auch 'android: background 'auf' LinearLayout' setzen. –

+0

Ja, ic_title ist das Zeichen, das ich oben definiert habe. Ich möchte nicht Android: Hintergrund, das ist nicht der gewünschte Effekt. Ich kann mehr ImageView in das LinearLayout einfügen. –

Antwort

14

Ich hatte ein ähnliches Problem und festgestellt, dass, wenn Sie die Größe Definition entfernen, Es funktioniert aus irgendeinem Grund.

Entfernen:

<size 
    android:width="60dp" 
    android:height="40dp" /> 

aus der Form.

Lassen Sie mich wissen, ob dies funktioniert!

+0

Aber eine Form ohne die Größendefinition, es ist das gleiche wie das Füllen des Hintergrunds von ImageView. –

+0

Wahr. Dann würde ich annehmen, dass Sie einen Container benötigen, um diese Bildansicht zu halten, die ihre eigene Größe auf die benötigte Größe setzt - das ist mein Beispiel - dh ich erkläre ein relatives Layout mit einer Größe und lege dann einfach meine imageView hinein . – sonnyd

+7

Haha! Ich habe dein Problem gefunden: D Ich hoffe du gibst mir mein erstes Lob dafür;) Du hast einen Tippfehler in deiner Shape Definition. Sehen Sie sich Folgendes an und sehen Sie das fehlende ":" nach http: "http // schemas.android.com/apk/res/android" – sonnyd

20

In ziehbar ich diesen XML-Code verwenden, um die Grenze und Hintergrund zu definieren:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="4dp" android:color="#D8FDFB" /> 
    <padding android:left="7dp" android:top="7dp" 
    android:right="7dp" android:bottom="7dp" /> 
    <corners android:radius="4dp" /> 
    <solid android:color="#f0600000"/> 
</shape>