2013-02-27 13 views

Antwort

147

Sicher. Sie können einem beliebigen Layout einen Rahmen hinzufügen. Grundsätzlich müssen Sie ein benutzerdefiniertes Zeichen erstellen und es als Hintergrund zu Ihrem Layout hinzufügen. Beispiel:

eine Datei customborder.xml in Ihrem ziehbar Ordner mit dem Namen erstellen:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <corners android:radius="20dp"/> 
    <padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/> 
    <stroke android:width="1dp" android:color="#CCCCCC"/> 
</shape> 

Jetzt ist es als Hintergrund für Ihre kleineren Layout anwenden:

<LinearLayout android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/customborder"> 

, die den Trick tun sollten.

Siehe auch:

+25

füllt Farbe in Rechteck. Sie müssen stattdessen verwenden, um nur die Grenze zu zeichnen. – NightFury

+1

Der Trick hier ist eigentlich die , nahm mich eine Weile, um herauszufinden, warum meine Form nicht funktioniert. Mit Padding funktioniert es gut. – John

+3

Beide '' und '' füllen das gesamte Rechteck? Ist das ein Fehler in meinem Code? – mr5

17

erstellen XML genannt border.xml in ziehbar Ordner wie folgt:

<?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="#FF0000" /> 
    </shape> 
    </item> 
    <item android:left="5dp" android:right="5dp" android:top="5dp" > 
    <shape android:shape="rectangle"> 
     <solid android:color="#000000" /> 
    </shape> 
    </item>  
</layer-list> 

dann dies lineare Layout hinzufügen, backgound als das:

 android:background="@drawable/border" 
8

Versuchen Sie folgendes:

Zum Beispiel definieren wir res/ziehbar/my_custom_background.xml als:

(dieses Layout in Ihrem ziehbar Ordner erstellen) layout_border.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="2dp" android:height="2dp" 
       android:color="#FF0000" /> 
      <solid android:color="#000000" /> 
      <padding android:left="1dp" android:top="1dp" android:right="1dp" 
       android:bottom="1dp" /> 

      <corners android:radius="1dp" android:bottomRightRadius="5dp" 
       android:bottomLeftRadius="0dp" android:topLeftRadius="5dp" 
       android:topRightRadius="0dp" /> 
     </shape> 
    </item> 

</layer-list> 

main.xml

<LinearLayout 
    android:layout_gravity="center" 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:background="@drawable/layout_border" /> 
</LinearLayout> 
9

Crea te eine eine XML-Datei in ziehbar Ordner

<stroke 
    android:width="2dp" 
    android:color="#B40404" /> 

<padding 
    android:bottom="5dp" 
    android:left="5dp" 
    android:right="5dp" 
    android:top="5dp" /> 

<corners android:radius="4dp" /> 

nun diese xml zu Ihrem kleinen Hintergrund Layout rufen

android: background = "@ ziehbar/yourxml"

+0

Elementhub ist hier nicht erlaubt. – hdavidzhu

3

Diese Lösung wird nur den Rahmen hinzufügen, der Körper des LinearLayout wird transparent sein.

Erstellen Sie zunächst diese Grenze ziehbar im ziehbar Ordner border.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android= "http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <stroke android:width="2dp" android:color="#ec0606"/> 
    <corners android:radius="10dp"/> 
</shape> 

Dann in Ihrer Linearlayout-Ansicht, die Grenze hinzuzufügen.xml als Hintergrund wie diese

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/border"> 
1

Sie können es tun Pragmatisch auch

GradientDrawable gradientDrawable=new GradientDrawable(); 
    gradientDrawable.setStroke(4,getResources().getColor(R.color.line_Input)); 

Stellen Sie dann den Hintergrund Layout wie:

LinearLayout layout = (LinearLayout) findViewById(R.id.ayout); layout .setBackground(gradientDrawable); 
1

I Android docs zu anderen Link hinzufügen werden Antworten.

https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Es beschreibt alle Attribute der Form Drawable und stroke unter ihnen die Grenze zu setzen.

Beispiel:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <stroke android:width="1dp" android:color="#F00"/> 
    <solid android:color="#0000"/> 
</shape> 

Rote Grenze mit transparentem Hintergrund.

Verwandte Themen