我删除了我的旧版本,并重新发布了我之前的问题并提供了更多信息,因为最初的问题被错误判断了。
以下是原始布局。它是右侧的按钮,两个编辑文本框占据剩余宽度的一半。
实际上,这是嵌套在另一个线性布局中,但这是我需要帮助的相关部分。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp" >
<EditText
android:id="@+id/txtUser"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:layout_weight="1"
android:maxLines="1" />
<EditText
android:id="@+id/txtPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:layout_weight="1"
android:maxLines="1" />
<Button
android:id="@+id/btnAddPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add" />
</LinearLayout>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/LinInput" />
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/LinInput"
android:text="@string/EmptyPass"
android:textSize="24sp"
android:padding="10dp" />
</RelativeLayout>
我的目标是减少文档中建议的LinearLayouts数量。一种可能是像我在下面的布局中所做的那样拥有一个空视图。空视图的宽度等于剩余宽度(减去按钮)。我在这个视图的两边设置了两个EditText控件。
现在,我只需要弄清楚如何从视图中间开始宽度。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/vwEmptyView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_toLeftOf="@+id/btnAddPassword"
android:layout_centerHorizontal="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true">
</View>
<EditText
android:id="@+id/txtUser"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:layout_weight="1"
android:maxLines="1"
android:layout_toLeftOf="@+id/vwEmptyView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:id="@+id/txtPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ems="10"
android:layout_weight="1"
android:maxLines="1"
android:layout_toRightOf="@+id/vwEmptyView"
android:layout_toLeftOf="@+id/btnAddPassword"
android:layout_toStartOf="@+id/btnAddPassword" />
<Button
android:id="@+id/btnAddPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btnAddPassword" />
</RelativeLayout>
顺便说一句,层次结构查看器显示另一个相对布局的三个绿点,但是这个点会变成红色,红色,黄色。
答案 0 :(得分:0)
这是您使用ConstraintLayout
实现所需布局的方法。
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/txtUser"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:ems="10"
android:maxLines="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/txtPassword"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/txtPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:layout_toStartOf="@+id/btnAddPassword"
android:layout_weight="1"
android:ems="10"
android:maxLines="1"
app:layout_constraintLeft_toRightOf="@+id/txtUser"
app:layout_constraintRight_toLeftOf="@+id/btnAddPassword"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnAddPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="add"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="8dp"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="8dp" />
<ListView
android:id="@android:id/list"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_below="@+id/btnAddPassword"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/btnAddPassword"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginRight="8dp"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
您可能已经注意到,您不需要任何其他视图来将2 EditTexts
置于可用空间的中心位置。我知道问题是关于使用RelativeLayout
做同样的事情,但是如果不添加一些不必要的视图,我就无法想到任何方法。在这种情况下,使用ConstraintLayout
是最佳解决方案。