在布局中添加空格


78

我正在尝试在android中制作空行。这就是我一直在做的:

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

我想知道是否有更好的方法?谢谢


1
填充?保证金?这将有助于查看整个布局,因为这是个别布局所特有的问题。
Glendon Trullinger 2011年

Answers:


167

使用SpaceView添加特定数量的空间。对于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改用)。

[2014年9月更新,以使用Space。@Sean的帽子提示]


fill_parent已弃用,因此我更新为match_parent。另外,在许多情况下,建议在match_parent上使用0dip。
拉德利2012年

有没有办法以编程方式实现这一目标?它与LinearLayout一样工作,但用View替换LinearLayout吗?
Musterknabe

谢谢,我使用的空间是用来填充多余的空间的
Naveed Ahmad

对于向后兼容的空间,请使用<android.support.v4.widget.Space
Hibbem

27

如果您不需要间隙恰好是2行高,则可以添加一个空白视图,如下所示:

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

@wizurd小部件不能使用View,请在其中使用FrameLayout而不是View。
radley 2014年

显然,这并不是两行高,因为行高取决于文本大小。
Marcel Bro

是的 我就是这么回答的。
卡斯珀·哈默

17

查看是否需要更改背景颜色,如果不需要则查看空格

那意味着你必须改变背景。

<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的提示解决了我无法显示背景色的问题。谢谢!
伊戈尔(Igor)

1
谢谢!!!我想知道空间的背景色。
山姆

15

更新的答案:从API 14开始,您可以使用“空间”视图,如文档所述

空间是轻量级的View子类,可用于在通用布局中的组件之间创建间隙。


3
:任何人都知道的一个例子<Space android:layout_width="fill_parent" android:layout_height="10dp" />
- XåpplI'-I0llwlg'I

4

如果要在布局之间留出空间,这是使用空间的方法。如果删除边距,它将不会显示。在空间内使用文本来显示不是一种好方法。希望能有所帮助。

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

1
它是非常轻量级的视图,因此我们必须使用Space而不是View。
Bhawna Raheja 2015年

3
<View
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:background="#80000000">
</View>

3

我强烈不同意CaspNZ的方法。

首先,将测量该不可见视图,因为它是“ fill_parent”。Android会尝试计算正确的宽度。相反,建议在此处使用较小的常数(1dp)。

其次,应将View替换为一个更简单的Space类,该类专用于在UI组件之间创建最快的速度以创建空白空间。


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

这可以通过使用spaceview来实现。

空间是轻量级的,但灵活性不高。

视图在屏幕上占据一个矩形区域,并负责绘图和事件处理。视图更具可定制性,您可以添加背景,绘制类似空间的形状。

实施空间:

(例如:用于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

只需将weightSumtag添加linearlayout到1并为其下面的相应视图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"/>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.