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?

7voto

Zaid Mirza Punkte 3182

Die einfachste Art, Ränder hinzuzufügen, ist das Einsetzen der Ränder mit InsetDrawable Im Folgenden wird nur der obere Rand angezeigt:

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-2dp"
    android:insetLeft="-2dp"
    android:insetRight="-2dp">
    <shape android:shape="rectangle">

        <solid android:color="@color/light_gray" />
        <stroke
            android:width=".5dp"
            android:color="@color/dark_gray" />
    </shape>
</inset>

6voto

Gk Mohammad Emon Punkte 4144

Sie können dies mit diesem Codeschnipsel tun -

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Minus (-) how much dp you gave in the stroke width from left right-->
    <item android:left="-10dp" android:right="-10dp">
        <shape
            android:shape="rectangle">
            <stroke android:width="10dp" android:color="@android:color/holo_red_dark" />
           <!--This is the main background -->
            <solid android:color="#FFDDDDDD" />
        </shape>
    </item>
</layer-list>

Vorschau -

enter image description here

5voto

Dinidiniz Punkte 711

Um dies zu ändern:

<TextView
    android:text="My text"
    android:background="@drawable/top_bottom_border"/>

Ich bevorzuge diesen Ansatz in "drawable/top_bottom_border.xml":

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:angle="90"
                android:startColor="#000"
                android:centerColor="@android:color/transparent"
                android:centerX="0.01" />
        </shape>
    </item>
</layer-list>

Damit werden nur die Ränder erstellt, nicht aber ein Rechteck, das erscheint, wenn der Hintergrund eine Farbe hat.

5voto

Nic Hubbard Punkte 40409

Warum nicht einfach eine 1dp hohe Ansicht mit einer Hintergrundfarbe erstellen? Dann lässt sie sich leicht dort platzieren, wo Sie wollen.

4voto

Cadab Punkte 457

Ich möchte der Liste nur meine Lösung hinzufügen.

Ich wollte einen halbtransparenten unteren Rand, der über die ursprüngliche Form hinausgeht (der halbtransparente Rand war also außerhalb das übergeordnete Rechteck).

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item>
    <shape android:shape="rectangle" >      
      <solid android:color="#33000000" /> <!-- Border colour -->
    </shape>
  </item>
  <item  android:bottom="2dp" >
    <shape android:shape="rectangle" >     
      <solid android:color="#164586" />
    </shape>
  </item>
</layer-list>

Das bedeutet für mich;

enter image description here

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