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


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]


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>

@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"
         />

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.


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

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>

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.


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


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.


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.


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!).


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>

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

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"/>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.