2014-04-22 9 views
15

Ich möchte nur eine untere und eine obere Grenze auf meinem Linearlayout hinzufügen. Ich habe versucht, dies zu tun:Hinzufügen nur oberen und unteren Rand auf LinearLayout

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

<item 
    android:bottom="1dp" 
    android:top="1dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#FFFFFF" /> 
     <stroke 
      android:width="1dp" 
      android:color="#000" /> 
    </shape> 
</item> 
</layer-list> 

Aber es einen Rahmen um die Form hinzuzufügen ..

Könnten Sie mir bitte helfen?

+0

Bessere Nutzung einen 9-Patch in diesem Fall. Zeichnen Sie einfach die oberen und unteren Ränder und lassen Sie die rechte und linke Grenze transparent. Natürlich mit Ausnahme der 9 Patch-Marker. –

+0

Sie können folgen [Gibt es eine einfache Möglichkeit, eine Grenze nach oben und unten im Android Ansicht hinzufügen?] [1] [1]: http://stackoverflow.com/questions/1598119/ Wie unterscheiden sich * menu_line_separator_in * und * menu_line_separator_out *? Ist es ein einfacher Weg, um eine Rand-zu-oben-und-unten-von-einer-Android-Ansicht hinzuzufügen? –

Antwort

17

Machen Sie diese zwei Datei und diesen Code setzen. Sie können Grenze obere und untere Grenze,

main.xml

<TextView 
     android:text="This is textline" 
     android:background="@drawable/border_set" 
/> 

border_set.xml

Diese Datei befindet sich in vollständigen Pfad project_root/res/drawable/border_set.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#FF000000" /> 
      <solid android:color="#FFDDDDDD" /> 

     </shape> 
    </item> 

    <item android:top="1dp" android:bottom="1dp"> 
     <shape 
     android:shape="rectangle"> 
      <stroke android:width="1dp" android:color="#000" /> 
      <solid android:color="#FFFFFF" /> 
     </shape> 
    </item> 

</layer-list> 
+5

Es scheint, dass es nicht funktioniert. Um die Form herum gibt es eine Grenze. Ich habe meinen Beitrag aktualisiert – wawanopoulos

+1

@wawanopoulos Das funktioniert nicht für mich auch. Ich denke, du solltest die Antwort nicht akzeptieren. Das ist irreführend – sachinjain024

+1

Er nahm auch seine Antwort von hier: http://Stackoverflow.com/questions/1598119/is-there-an-easy-way-to-add-a-border-to-the-top- and-bottom-of-android-view –

1

Es ist einfach. Zeichne 3 Formen wie diese.

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

    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/menu_line_separator_in" /> 
     </shape> 
    </item> 
    <item android:bottom="1.5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/menu_line_separator_out" /> 
     </shape> 
    </item> 
    <item android:top="1.5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/menu_line_separator_out" /> 
     </shape> 
    </item> 

</layer-list> 
+0

? sag, dass ich oben und unten eine schwarze Linie zeichnen möchte. Ich denke ** menu_line_separator_out ** nur eine schwarze Farbe. Aber wie wäre es mit ** menu_line_separator_in **? – Sam

23

lösen Ich glaube, Sie dieses ziehbar erstellen und es als Hintergrund verwenden:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="#000"/> 
     </shape> 
    </item> 
    <item android:bottom="1dp" android:top="1dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="#FFFFFF" /> 
     </shape> 
    </item> 
</layer-list> 

Denken Sie an wie ein Rechteck mit Rahmenfarbe ersten Zeichnung und legen dann auf es ein Rechteck mit der Hintergrundfarbe, die 1dp oben und unten auslässt.

+1

Wird es beim Malen nicht einen Overhead geben? – CoolMind

14

Hier ist die Lösung. Es funktioniert sogar mit transparentem Hintergrund.

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

    <item android:left="-2dp" android:right="-2dp"> 
     <shape android:shape="rectangle"> 
      <stroke android:width="2dp" android:color="@color/borderColor" /> 
      <solid android:color="@color/backgroundColor" /> 
     </shape> 
    </item> 

</layer-list> 
4

Eine schnelle Möglichkeit, dies zu erreichen:

  • eine Textansicht auf den Boden hinzufügen und/oder oben in Ihrem Layout.
  • die Breite des Textview-Set
  • Stellen Sie die Textview Höhe auf „match_parent“ über „1 dp“ oder die Dicke finden Sie
  • den Hintergrund auf die Farbe des Textview-Set möchten Sie die Grenze möchte
sein

Ich hoffe, das hilft!

+1

Upvote Für das schnellste Beispiel – Erythrozyt

+1

Die Verwendung einer 1DP hohen Textansicht hat einen schlechten "Code-Geruch" – ComeIn

2

Meine Version ist dies, nur ist der Rand oben und unten sichtbar, zeigt nicht die Grenzen links oder rechts. Und der Hintergrund ist transparent.

<?xml version="1.0" encoding="utf-8"?> 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="1dp"> 

    <item 
     android:left="-1dp" 
     android:right="-1dp" 
     android:top="-1dp" 
     android:bottom="1dp"> 
     <shape 
      android:shape="rectangle"> 
      <stroke 
       android:width="1dp" 
       android:color="@color/BlueGrey_colorPrimary" /> 
      <solid android:color="@android:color/transparent" /> 
     </shape> 
    </item> 

</layer-list> 
0

Ich glaube, das ist der einfachste Weg ist:

<View 
    android:layout_width="match_parent" 
    android:layout_height="2dp" 
    android:background="#000000" />