438 Stimmen

Gibt es eine einfache Möglichkeit, einen Rahmen am oberen und unteren Rand einer Android-Ansicht hinzuzufügen?

Ich habe eine TextView und ich möchte einen schwarzen Rand entlang der oberen und unteren Grenzen hinzufügen. Ich habe versucht, hinzuzufügen android:drawableTop y android:drawableBottom auf die TextView, aber das führte nur dazu, dass die gesamte Ansicht schwarz wurde.

<TextView
    android:background="@android:color/green"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:drawableTop="@android:color/black"
    android:drawableBottom="@android:color/black"
    android:text="la la la" />

Gibt es eine Möglichkeit, einfach einen oberen und unteren Rand zu einer Ansicht (insbesondere eine TextView) in Android hinzufügen?

36voto

phreakhead Punkte 13829

Ich wollte also etwas anderes machen: einen Rahmen am unteren Rand, um eine ListView-Trennwand zu simulieren. Ich änderte Piet Delports Antwort und bekam dies:

<?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/background_trans_light" />    

        </shape>
   </item>

    <!-- this mess is what we have to do to get a bottom border only. -->
   <item android:top="-2dp"
         android:left="-2dp"
         android:right="-2dp"
         android:bottom="1px"> 
      <shape 
        android:shape="rectangle">    
            <stroke android:width="1dp" android:color="@color/background_trans_mid" />
            <solid android:color="@null" />
        </shape>
   </item>

</layer-list>

Beachten Sie, dass Sie px anstelle von dp verwenden, um genau 1 Pixel Teiler zu erhalten (bei manchen Handy-DPIs verschwindet eine 1dp Linie).

12voto

Oleg Punkte 680

Datei zu res/drawable hinzufügen

<?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="1dp"
                    android:color="#000000" />
            </shape>
        </item>
    </layer-list>

Link zu dieser Datei hinzufügen zu Hintergrund Eigenschaft

9voto

MattZ Punkte 381

Wie @Nic Hubbard schon sagte, gibt es eine sehr einfache Möglichkeit, eine Grenzlinie hinzuzufügen.

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

Sie können die Höhe und die Hintergrundfarbe nach Belieben ändern.

8voto

vovahost Punkte 29502

Meine Antworten basieren auf der Version von @Emile, aber ich verwende transparente Farben anstelle von Volltonfarben.
In diesem Beispiel wird ein unterer Rand von 2dp gezeichnet.

<?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:color="#50C0E9" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
    <item  android:bottom="2dp" >
        <shape android:shape="rectangle" >
            <stroke  android:width="2dp"
                     android:color="@color/bgcolor" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

@color/bgcolor ist die Farbe des Hintergrunds, auf dem Sie Ihre Ansicht mit Rahmen zeichnen.

Wenn Sie die Position des Rahmens ändern möchten, ändern Sie den Versatz mit einem der folgenden Parameter:

android:bottom="2dp"
android:top="2dp"
android:right="2dp"
android:left="2dp"

oder sie kombinieren, um 2 oder mehr Grenzen zu haben:

android:bottom="2dp" android:top="2dp"

8voto

okaram Punkte 81

Sie können die Ansicht auch in ein FrameLayout einpacken und dann die Hintergrundfarbe und die Auffüllung des Rahmens so einstellen, wie Sie es wünschen; allerdings hat die Textansicht standardmäßig einen "transparenten" Hintergrund, sodass Sie die Hintergrundfarbe der Textansicht ebenfalls ändern müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X