Hinzufügen von Leerzeichen zum Layout

79

Ich versuche, leere Zeilen innerhalb von Android zu machen. Das habe ich getan:

android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="\n\n"

Ich möchte wissen, ob es einen besseren Weg gibt. Vielen Dank

Qwertyfshag
quelle
1
Polsterung? Ränder? Es wäre hilfreich, das gesamte Layout zu sehen, da es sich um ein Problem handelt, das für einzelne Layouts spezifisch ist.
Glendon Trullinger

Antworten:

169

Verwenden Sie Spaceoder View, um eine bestimmte Menge an Speicherplatz hinzuzufügen. Für 30 Pixel mit vertikaler Dichte:

<Space
  android:layout_width="1dp"
  android:layout_height="30dp"/>

Wenn Sie einen flexiblen Raumfüller benötigen, verwenden Sie Viewzwischen Elementen in a LinearLayout:

<View
  android:layout_width="1dp"
  android:layout_height="match_parent"
  android:layout_weight="1"/>

oder

<View
  android:layout_width="1dp"
  android:layout_height="0dp"
  android:layout_weight="1"/>

Dies funktioniert für die meisten Layouts für API 14 und höher, mit Ausnahme von Widgets ( FrameLayoutstattdessen verwenden).

[9/2014 aktualisiert, um Space zu verwenden. Hutspitze zu @Sean]

Radley
quelle
fill_parent ist veraltet, daher habe ich auf match_parent aktualisiert. Außerdem wird 0dip in vielen Fällen über match_parent empfohlen.
Radley
Gibt es eine Möglichkeit, dies programmatisch zu erreichen? Funktioniert es genauso wie LinearLayout, ersetzt LinearLayout jedoch durch View?
Musterknabe
Vielen Dank, ich habe Platz verwendet, da er zum Füllen zusätzlicher Räume erstellt wurde
Naveed Ahmad
Verwenden Sie für abwärtskompatible
Bereiche
28

Wenn die Lücke nicht genau 2 Zeilen hoch sein muss, können Sie eine leere Ansicht wie folgt hinzufügen:

    <View
        android:layout_width="fill_parent"
        android:layout_height="30dp">
    </View>
Caspar Harmer
quelle
@wizurd Widgets können View nicht verwenden, verwenden Sie FrameLayout in ihnen anstelle von View.
Radley
Dies sind nicht genau zwei Zeilen, da die Zeilenhöhe offensichtlich von der Textgröße abhängt.
Marcel Bro
Ja. Das habe ich in meiner Antwort gesagt.
Caspar Harmer
18

Ansicht Wenn Sie Hintergrundfarbe ändern, Raum , wenn nicht.

Diese Dosierung bedeutet, dass Sie den Ansichtshintergrund ändern müssen.

<View
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:background="@color/YOUR_BACKGROUND">
</View>

oder Raum

<Space
        android:layout_width="match_parent"
        android:layout_height="20dp"
         />
Mina Fawzy
quelle
3
Ihr Hinweis, wann View und wann Space verwendet werden sollen, hat mein Problem gelöst, dass keine Hintergrundfarbe angezeigt werden kann. Vielen Dank!
Igor
1
Vielen Dank!!! Ich habe mich über die Hintergrundfarbe für den Weltraum gewundert.
Sam
16

Eine aktualisierte Antwort: Seit API 14 können Sie die "Space" -Ansicht verwenden, wie in der Dokumentation beschrieben .

Space ist eine einfache View-Unterklasse, mit der Lücken zwischen Komponenten in Allzwecklayouts erstellt werden können.

Sean
quelle
3
Ein Beispiel für alle, die sich fragen:<Space android:layout_width="fill_parent" android:layout_height="10dp" />
XåpplI'-I0llwlg'I -
5

Wenn Sie den Abstand zwischen den Layouts angeben möchten, können Sie auf diese Weise Leerzeichen verwenden. Wenn Sie den Rand entfernen, wird er nicht angezeigt. Die Verwendung von Text im angezeigten Bereich ist kein guter Ansatz. hoffentlich hilft das.

<Space
        android:layout_width="match_content"
        android:layout_height="wrap_content"
        android:layout_margin="2sp" />
Hemant Shori
quelle
1
Es ist eine sehr leichte Ansicht, daher müssen wir Space anstelle von View verwenden.
Bhawna Raheja
3
<View
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:background="#80000000">
</View>
selva_pollachi
quelle
3

Ich bin mit dem Ansatz von CaspNZ überhaupt nicht einverstanden.

Zunächst wird diese unsichtbare Ansicht gemessen, da es sich um "fill_parent" handelt. Android wird versuchen, die richtige Breite zu berechnen. Stattdessen wird hier eine kleine konstante Zahl (1dp) empfohlen.

Zweitens sollte View durch eine einfachere Klasse Space ersetzt werden, eine Klasse, die dazu dient, Leerzeichen zwischen UI-Komponenten für die schnellste Geschwindigkeit zu erstellen.

Ian Wong
quelle
2

Versuche dies

in layout.xml:

<TextView
        android:id="@+id/xxx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/empty_spaces" />

in strings.xml:

<string name="empty_spaces">\t\t</string>

es hat bei mir funktioniert

Rana Osama
quelle
2

Dies kann durch Verwendung von Raum oder Ansicht erreicht werden .

Der Platz ist leicht, aber nicht sehr flexibel.

Aussicht nimmt einen rechteckigen Bereich auf dem Bildschirm ein und ist für das Zeichnen und die Ereignisbehandlung verantwortlich. Die Ansicht ist anpassbarer, Sie können Hintergrund hinzufügen, Formen wie Raum zeichnen.

Raum implementieren:

(ZB: Platz für 20 Pixel mit vertikaler und 10 horizontaler Dichte)

<Space
  android:layout_width="10dp"
  android:layout_height="20dp"/>

Implementierungsansicht:

(Beispiel: Ansicht Für 20 Pixel mit vertikaler und 10 horizontaler Dichte einschließlich Hintergrundfarbe)

  <View
       android:layout_width="10dp"
       android:layout_height="20dp"
       android:background="@color/bg_color"/>

Platz für die Formatierung von Zeichenfolgen mithilfe einer HTML-Entität:

&#160;für nicht zerbrechliche Leerzeichen. &#032;für regelmäßigen Raum.

Preetish Priyadarshi Samal
quelle
1

Fügen Sie einfach ein weightSumTag zu linearlayout1 hinzu und geben Sie für die entsprechende Ansicht darunter layout_weightals .9 ein Leerzeichen zwischen den Ansichten ein. Sie können mit den Werten experimentieren, um einen geeigneten Wert für Sie zu erhalten.

Hari Lee
quelle
0

Stimmen Sie mit allen Antworten überein ...... auch,

    <TextView android:text=""
              android:layout_width="match_parent"
              android:layout_height="30dp"
              android:layout_weight="2" />

sollte funktionieren :) Ich spiele nur mit anderen, da TextView mein Favorit ist (Speicherverschwendung!).

ha9u63ar
quelle
0

Die vorherigen Antworten haben in meinem Fall nicht funktioniert. Das Erstellen eines leeren Elements im Menü ist jedoch ausreichend.

<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
  ...
  <item />
  ...
</menu>
AlexL
quelle
0

Es gibt eine bessere Möglichkeit, dies zu tun. Verwenden Sie einfach den folgenden Code und ändern Sie die Größe des leeren Bereichs entsprechend der gewünschten Größe

     <Space
            android:layout_width="wrap_content"
            android:layout_height="32dp"
            android:layout_column="0"
            android:layout_row="10" />

Wenn Sie mit dem Rasterlayout verwenden, verwenden Sie nur

 android:layout_row="10" />
Ashad Nasim
quelle
0

Im Folgenden finden Sie die einfache Möglichkeit, eine leere Zeile mit Zeilengröße zu erstellen. Hier können wir die Größe der Leerzeile anpassen. Probier diese.

           <TextView
            android:id="@id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="5dp"/>
Sunil
quelle