【问题标题】:Adding blank spaces to layout在布局中添加空格
【发布时间】:2011-06-15 01:50:57
【问题描述】:

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

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

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

【问题讨论】:

  • 填充?边距?查看整个布局会有所帮助,因为这是个别布局特有的问题。

标签: android xml


【解决方案1】:

使用SpaceView 添加特定数量的空间。对于 30 个垂直密度像素:

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

如果您需要灵活的空格填充符,请在 LinearLayout 中的项目之间使用 View

<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。此外,在许多情况下,建议使用 0dip 而不是 match_parent。
  • 有没有办法以编程方式实现这一点?它是否与 LinearLayout 一样工作,但用 View 替换 LinearLayout?
  • 谢谢,我使用空间,因为它是为填充额外空间而创建的
  • 对于向后兼容的空间,使用
【解决方案2】:

如果您不需要间隙正好是 2 行高,您可以像这样添加一个空视图:

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

【讨论】:

  • @wizurd Widgets 不能使用 View,在其中使用 FrameLayout 代替 View。
  • 这不会是正好两行,因为行高显然取决于文本大小。
  • 是的。这就是我在回答中所说的。
【解决方案3】:

View 如果您需要更改背景颜色,Space 如果不需要。

这意味着您必须更改视图背景。

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

【讨论】:

  • 您关于何时使用 View 和何时使用 Space 的提示解决了我无法显示背景颜色的问题。谢谢!
  • 谢谢!!!我想知道空间的背景颜色。
【解决方案4】:

更新的答案:从 API 14 开始,您可以使用“空间”视图,as described in the documentation

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

【讨论】:

  • 任何想知道的人的例子:&lt;Space android:layout_width="fill_parent" android:layout_height="10dp" /&gt;
  • 类空间扩展了视图,因此比视图重
【解决方案5】:

如果你想在布局之间留出空间。这是使用空间的方式。如果您删除边距,它将不会出现。使用空间内的文本出现不是一个好方法。 希望对您有所帮助。

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

【讨论】:

  • 这是一个非常轻量级的视图,所以我们必须使用Space而不是View。
【解决方案6】:
<View
    android:layout_width="fill_parent"
    android:layout_height="30dp"
    android:background="#80000000">
</View>

【讨论】:

    【解决方案7】:

    我强烈反对 CaspNZ 的做法。

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

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

    【讨论】:

      【解决方案8】:

      试试这个

      在 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>
      

      对我有用

      【讨论】:

        【解决方案9】:

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

        Space 是轻量级的,但不太灵活。

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

        实施空间:

        (例如: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 实体格式化字符串的空间:

        &amp;#160; 用于不可破坏的空白。 &amp;#032; 用于常规空间。

        【讨论】:

          【解决方案10】:

          只需将weightSum 标记添加到linearlayout 到1,并为其下方的相应视图将layout_weight 设为0.9,它将在视图之间创建一个空间。您可以试验这些值以获得适合您的值。

          【讨论】:

            【解决方案11】:

            同意所有答案......还有,

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

            应该工作 :) 我只是在和其他人打交道,因为 TextView 是我最喜欢的(虽然浪费内存!)

            【讨论】:

              【解决方案12】:

              以前的答案在我的情况下不起作用。但是,在菜单中创建一个空项会。

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

              【讨论】:

                【解决方案13】:

                有更好的方法来做到这一点 只需使用下面的代码并根据您想要的空白区域的大小进行更改

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

                如果您使用网格布局,则仅使用

                 android:layout_row="10" />
                

                【讨论】:

                  【解决方案14】:

                  以下是创建具有行大小的空白行的简单方法。 在这里我们可以调整空白行的大小。 试试这个。

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

                  【讨论】: