Додавання порожніх пробілів до макета


79

Я намагаюся робити порожні рядки в android. Це те, чим я займався:

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

Я хочу знати, чи є кращий спосіб? Дякую


1
Набивання? Поля? Це допомогло б побачити весь макет, оскільки це питання, характерне для окремих макетів.
Glendon Trullinger

Відповіді:


171

Використовуйте Spaceабо, Viewщоб додати певну кількість місця. Для 30 пікселів вертикальної щільності:

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

Якщо вам потрібен гнучкий простір-заповнювач, використовуйте Viewміж елементами в LinearLayout:

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

або

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

Це працює для більшості макетів для API 14 та новіших версій, крім віджетів (використовуйте FrameLayoutзамість них).

[Оновлено 9/2014 для використання космосу. Порада капелюха @Sean]


fill_parent застарілий, тому я оновив його до match_parent. Крім того, у багатьох випадках рекомендується 0dip замість match_parent.
редлі

Чи є спосіб досягти цього програмно? Чи працює він так само, як LinearLayout, але замінює LinearLayout на View?
Мустернабе

Дякую, я використав простір, як він створений для заповнення зайвих просторів
Naveed Ahmad

Для зворотньо сумісних просторів використовуйте <android.support.v4.widget.Space
Hibbem

28

Якщо вам не потрібно, щоб пробіл був рівним 2 рядки, ви можете додати порожній вигляд таким чином:

    <View
        android:layout_width="fill_parent"
        android:layout_height="30dp">
    </View>

Віджети @wizurd не можуть використовувати View, використовуйте в них FrameLayout замість View.
radley

Це не буде рівно два рядки висотою, оскільки висота рядка, очевидно, залежить від розміру тексту.
Марсель Бро

Так. Це я сказав у своїй відповіді.
Каспар Хармер

18

Перегляньте, якщо вам потрібно змінити колір фону, пробіл, якщо ні.

це не означає, що вам доведеться змінити фон перегляду.

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

або Космос

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

3
Ваш підказка щодо того, коли використовувати View, а коли Space, вирішив мою проблему неможливості показати колір фону. Дякую!
Ігор

1
Дякую!!! Мені було цікаво про колір фону для простору.
Сем

16

Оновлена ​​відповідь: Починаючи з API 14, ви можете використовувати "Space" View, як описано в документації .

Простір - це легкий підклас View, який може використовуватися для створення проміжків між компонентами в макетах загального призначення.


3
Приклад для тих, хто задається питанням:<Space android:layout_width="fill_parent" android:layout_height="10dp" />
XåpplI'-I0llwlg'I -

5

якщо ви хочете виділити простір між макетом .це спосіб використовувати простір. якщо видалити поле, воно не з'явиться. використання тексту всередині простору - це не найкращий підхід. сподівання, що допомагає.

<Space
        android:layout_width="match_content"
        android:layout_height="wrap_content"
        android:layout_margin="2sp" />

1
Це дуже легкий вигляд, тому ми повинні використовувати Простір замість Перегляду.
Bhawna Raheja


3

Я категорично не погоджуюся з підходом CaspNZ.

Перш за все, цей невидимий вигляд буде виміряний, оскільки він є "fill_parent". Android спробує розрахувати правильну його ширину. Натомість тут рекомендується невелике постійне число (1dp).

По-друге, View слід замінити на простіший клас Space, клас, призначений для створення порожніх пробілів між компонентом інтерфейсу для найшвидшої швидкості.


2

спробуйте це

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

у strings.xml:

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

це спрацювало для мене


2

Цього можна досягти, використовуючи простір або вид .

Простір невеликий, але не набагато гнучкий.

Вид займає прямокутну область на екрані і відповідає за малювання та обробку подій. Перегляд більш настроюваний, ви можете додавати фон, малювати фігури, як простір.

Реалізація простору:

(Наприклад: простір для 20 вертикальних та 10 горизонтальних пікселів щільності)

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

Реалізація подання:

(Наприклад: Перегляд для 20 вертикальних та 10 горизонтальних пікселів щільності, включаючи колір фону)

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

Простір для форматування рядків за допомогою сутності HTML:

&#160;для простору, що не ламається &#032;для звичайного простору.


1

Просто додайте weightSumтег до linearlayout1 і для відповідного подання під ним дайте layout_weightяк .9, він створить простір між представленнями. Ви можете експериментувати зі значеннями, щоб отримати відповідне значення для вас.


0

Погодьтеся з усіма відповідями ...... також,

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

повинен працювати :) Я просто возиться з іншими, оскільки TextView є моїм улюбленим (хоча марнотрат пам'яті!)


0

Попередні відповіді в моєму випадку не спрацювали. Однак створення порожнього пункту в меню робить.

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

0

є кращий спосіб зробити це, просто скористайтеся наведеним нижче кодом і змініть відповідно до бажаного розміру порожньої області

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

якщо ви використовуєте з укладкою сітки, тоді використовуйте лише

 android:layout_row="10" />

0

Нижче наведено простий спосіб створити порожній рядок із розміром рядка. Тут ми можемо відрегулювати розмір порожнього рядка. Спробуйте це.

           <TextView
            android:id="@id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="5dp"/>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.