RelativeLayout Interchild保证金

时间:2016-01-15 04:07:34

标签: android android-layout android-relativelayout

您好我知道使用RelativeLayout,我们可以使用layout_toRightOflayout_toLeftOflayout_above将视图放在另一个旁边。

但是,我想知道我们如何为它添加一些间距/边距?如果我只是设置边距,它将导致视图根据父视图设置边距。任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

也许将填充设置添加到RelativeLayout可能会有效。

因此,基本上有两种方法可以为视图设置间距。 填充边距

请考虑以下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<TextView
    android:id="@+id/text1"
    android:background="#ff0000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text 1" />
<Button
    android:id="@+id/button1"
    android:background="#00ff00"
    android:layout_toRightOf="@id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button 1"/>
</RelativeLayout>

输出Output of the above code

  1. 填充:填充设置描述视图中的区域 允许视图绘制其内容的地方。
  2. 例如:更改上述代码中的填充设置:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    
    <TextView
        android:id="@+id/text1"
        android:background="#ff0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:text="Text 1" />
    <Button
        android:id="@+id/button1"
        android:background="#00ff00"
        android:layout_toRightOf="@id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:text="Button 1"/>
    </RelativeLayout>
    

    输出Output after adding padding of 20dp

    (您是否注意到现在,内容是在距离视图边界20dp之后绘制的)

    1. 保证金:另一方面,保证金设置描述了可以绘制视图本身的区域。
    2. 在上面的代码中添加边距设置(并删除填充):

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent" android:layout_height="match_parent">
      
      <TextView
          android:id="@+id/text1"
          android:background="#ff0000"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="20dp"
          android:text="Text 1" />
      <Button
          android:id="@+id/button1"
          android:background="#00ff00"
          android:layout_toRightOf="@id/text1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="20dp"
          android:text="Button 1"/>
      </RelativeLayout>
      

      <强>输出Output after adding margin to the views

      正如你所看到的,这一次的视图是在它周围留下20dp的距离后绘制的。

      所以两种间距技术,填充和边距,第一种工作在视图的内容和#34;而后者就是&#34;视图本身&#34;。

答案 1 :(得分:1)

不,边距将适用于视图的邻居,而不是父母,例如,如果将layout_marginLeft=20dp设置为view1,则view1的左侧(假设view2)将与view1具有20dp的边距,而不是父节点所有

答案 2 :(得分:1)

使用填充在视图内设置边距:
    android:padding="5dp"
     android:paddingLeft="5dp"
      android:paddingRight="5dp"
      android:paddingBottom="5dp"
       android:paddingTop="5dp"