我开始将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"
答案 0 :(得分:1)
layout_toRightOf,layout_below等的方式是,对于大多数视图,它们对齐视图的左上角,无论您指定哪个位置。此外,RelativeLayout属性倾向于尽可能少地影响元素 - toRightOf
只是移动x坐标,below
只是移动y坐标等。对于复杂的布局,你会倾向于最需要2个属性。
就个人而言,我倾向于使用layout_alignTop
,layout_alignLeft
等,因为它们更直观。
如果您想了解有关此特定ViewGroup的更多信息,请参阅此处:Android User Interface Design: Relative Layouts
答案 1 :(得分:1)
在相对布局中,layout_toRightOf属性设置元素的水平坐标。所以,你告诉它把它放在所需元素右边的X轴上。它设置x坐标和元素浮动在顶部,因为没有垂直位置的指导(假设y坐标)。调用layout_below设置y坐标。