2014-10-01 11 views
13

ich einen Knopf für meine Form wie dieseAndroid - macht eine Pfeilung mit xml

enter image description here

machen wollen Gibt es eine Möglichkeit, dies mit XML zu tun? Wie einige Punkte einstellen, in meinem Fall habe ich 5 ..

+0

Wenn der Hintergrund vom Layout dynamisch ist, werden seine weißen Spuren angezeigt [! [Bildbeschreibung hier eingeben] (http://i.stack.imgur.com/FKtR1.png)] (http: //i.stack. imgur.com/FKtR1.png) –

Antwort

20

Was Sie brauchen, ist ein shape xml file in Ihrem Projekt drawable-xxx Ordner zu erstellen und dann für eine Schaltfläche, um diese Form als Hintergrund verwenden.

Hier ist die Form-Datei namens arrow_shape.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<!-- Colored rectangle--> 
<item> 
    <shape android:shape="rectangle"> 
     <size 
      android:width="100dp" 
      android:height="40dp" /> 
     <solid android:color="#5EB888" /> 
     <corners android:radius="0dp"/> 
    </shape> 
</item> 

<!-- This rectangle for the top arrow edge --> 
<!-- Its color should be the same as the layout's background --> 
<item 
    android:top="-40dp" 
    android:bottom="65dp" 
    android:right="-30dp"> 
    <rotate 
     android:fromDegrees="45"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffffff" /> 
     </shape> 
    </rotate> 
</item> 

<!-- This rectangle for the lower arrow edge --> 
<!-- Its color should be the same as the layout's background --> 
<item 
    android:top="65dp" 
    android:bottom="-40dp" 
    android:right="-30dp"> 
    <rotate 
     android:fromDegrees="-45"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffffff" /> 
     </shape> 
    </rotate> 
</item> 

</layer-list> 

es dann als Schaltfläche Hintergrund verwenden, zum Beispiel

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/arrow_shape"/> 

Hier ist der Screenshot:

enter image description here

Weitere Informationen über Layer-List finden Sie unter here.

EDIT:

Beachten Sie aber, dass ich bestimmte Werte für die Form der Breite und Höhe verwendet. Wenn Sie diese ändern, müssen Sie möglicherweise die Werte des top, bottom and right attributes ändern. Berücksichtigen Sie in diesem Fall die Verwendung anderer Werte in Ihrem Projekt values Verzeichnis.