相对布局 - layout_toRightOf

时间:2015-01-31 16:36:21

标签: android relativelayout

我开始将TableLayout转换为RelativeLayout。我们使用A,B表示列,使用1,2表示行。我将A2 BELOW A1和B2设置为A2的 RIGHT 。问题是A2显示在A1上(例如在第一行)!我尝试将align_baseline设置为A2但它的行为方式相同。解决方案是设置A2 BELOW A1。

你能解释一下这个行为,为什么我还要设置 BELOW 属性?我认为我只需要将第一列的元素设置在上排下方,它们的邻居就会坐在它们旁边。

PS我查看了可能已经有我的答案和类似问题的问题。

更新了代码:

<TextView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:text="1"
    android:id="@+id/firstOperand"
    style="@style/KeypadButton" />

<TextView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_toRightOf="@id/firstOperand"
    android:text="+"
    android:id="@+id/operator"
    style="@style/KeypadFunctionButton" />

<TextView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_toRightOf="@id/operator"
    android:text="1"
    android:id="@+id/secondOperand"
    style="@style/KeypadButton" />

<TextView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_toRightOf="@id/secondOperand"
    android:text="="
    android:id="@+id/equalView"
    style="@style/KeypadFunctionButton" />

<TextView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_toRightOf="@id/equalView"
    android:text="2"
    android:id="@+id/resultView"
    style="@style/KeypadButton" />

<SeekBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/firstOperand"
    android:id="@+id/seekBar"
    android:layout_gravity="center_vertical"
    android:onClick=""
    />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/seekBar"
    android:id="@+id/progressImage"
    android:src="@drawable/ic_action_cat"
    android:layout_gravity="center"
    android:layout_alignParentRight="true" />

我必须在progressImage中添加以下行,否则图像将显示在操作员按钮上。

    android:layout_below="@id/firstOperand"

2 个答案:

答案 0 :(得分:1)

layout_toRightOf,layout_below等的方式是,对于大多数视图,它们对齐视图的左上角,无论您指定哪个位置。此外,RelativeLayout属性倾向于尽可能少地影响元素 - toRightOf只是移动x坐标,below只是移动y坐标等。对于复杂的布局,你会倾向于最需要2个属性。

就个人而言,我倾向于使用layout_alignToplayout_alignLeft等,因为它们更直观。

如果您想了解有关此特定ViewGroup的更多信息,请参阅此处:Android User Interface Design: Relative Layouts

答案 1 :(得分:1)

在相对布局中,layout_toRightOf属性设置元素的水平坐标。所以,你告诉它把它放在所需元素右边的X轴上。它设置x坐标和元素浮动在顶部,因为没有垂直位置的指导(假设y坐标)。调用layout_below设置y坐标。