我尝试将CheckBox对齐EditText的右侧。问题是,如果按照我的方式进行,我会有循环依赖。
我想在EditTexts的BaseLine上对齐Powerbox和Landline复选框。
目前我使用此代码
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/txt_elec_box"
android:id="@+id/electricityBox"
android:layout_below="@id/streetText"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingTop="5dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/streetNumText"
android:layout_below="@id/streetText"
android:layout_alignStart="@id/electricityBox"
android:layout_alignLeft="@id/electricityBox"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:hint="@string/txt_street_check"
android:layout_toLeftOf="@id/electricityBox" />
....
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/txt_landline"
android:id="@+id/landlineBox"
android:layout_below="@id/familyNameText"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:paddingTop="5dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/phoneNumberText"
android:layout_below="@id/familyNameText"
android:layout_alignStart="@id/landlineBox"
android:layout_alignLeft="@id/landlineBox"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/landlineBox" />
如您所见,我使用了
android:paddingTop="5dp"
在复选框上让它们在底部更多一些但我想要做的就是这个
android:layout_alignBaseline="@id/phoneNumberText"
然后出现循环依赖。
我还希望复选框也可以水平对齐,如果可以采用非硬编码宽度的方式(截图中的完美对齐方式是使用我的应用程序的英文版本)。
答案 0 :(得分:1)
首先,将您的父布局设为LinearLayout,然后对于布局中的每个行项,将其设为RelativeLayout。像这样:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/streetText">
<EditText
android:id="@+id/streetNumText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/electricityBox"
android:hint="@string/txt_street_check" />
<CheckBox
android:id="@+id/electricityBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="@string/txt_elec_box" />
</RelativeLayout>
答案 1 :(得分:0)
将它们包裹在LinearLayout中并使用gravity(或layout_gravity)=“center”