我想创建一个布局,就像下面的图片一样,但是我真的不知道我应该使用哪种布局模式来实现这一点。我知道如何也可以水平和垂直对齐小部件,但是不知道如何在同一时间垂直和水平对齐小部件。正如您在下图中所看到的,有一列TextView
和一列EditText
,并且每一行TextView
与EditText
小部件对齐,知道如何对齐,但是如您所见,TextView
也是垂直对齐的,EditText
也是对齐的,我不知道如何在不失去垂直对齐或水平对齐的情况下实现这一点。 / p>
答案 0 :(得分:0)
这就像这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="Label Goes Here:"
android:textColor="#fff"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="#fff"
/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
>
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="Label Goes Here:"
android:textColor="#fff"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="#fff"
/>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
从Android开发资源中了解如何使用Grid Layout系统。我在自己的项目中使用了此方法,并且在我正在研究的其他任何前端UI上都使用了网格系统,无论它是移动的还是Angular项目。
https://developer.android.com/reference/android/widget/GridLayout
这是一个很棒的教程/说明:
答案 2 :(得分:0)
获得该布局而不嵌套布局并获得更好控制的最简单方法是使用SimpleContentProposalProvider proposalProviderNegozio = new SimpleContentProposalProvider(combonegozio.getItems());
ContentProposalAdapter proposalAdapterNegozio = new ContentProposalAdapter(combonegozio, new ComboContentAdapter(),
proposalProviderNegozio, getActivationKeystroke(), getAutoactivationChars());
proposalProviderNegozio.setFiltering(true);
proposalAdapterNegozio.setPropagateKeys(true);
proposalAdapterNegozio.setProposalAcceptanceStyle(ContentProposalAdapter.PROPOSAL_REPLACE);
。
在ConstraintLayout中,每个视图都可以将其顶部/底部/左侧/右侧约束到另一个View或其父级。
举个简单的例子:
ConstraintLayout
请注意,我没有添加任何边距,因为您会知道如何处理任何布局。
但请看一下我对约束的处理方式。
首先,我告诉布局我希望将FirstName TextView放置在<androidx.constraintlayout.widget.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">
<TextView
android:id="@+id/firstName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First Name"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<TextView
android:id="@+id/lastName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Last Name"
app:layout_constraintTop_toBottomOf="@+id/firstName"
app:layout_constraintLeft_toLeftOf="@+id/firstName"
app:layout_constraintRight_toRightOf="@+id/firstName" />
<EditText
android:id="@+id/firstNameEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@+id/firstName"
app:layout_constraintBottom_toBottomOf="@+id/firstName"
app:layout_constraintLeft_toRightOf="@+id/firstName"
app:layout_constraintRight_toRightOf="parent" />
<EditText
android:id="@+id/lastNameEdit"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@+id/lastName"
app:layout_constraintBottom_toBottomOf="@+id/lastName"
app:layout_constraintLeft_toRightOf="@+id/lastName"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
(即布局本身)的左上方。
接下来,我告诉布局,我希望将LastName TextView放置在FirstName TextView 和下方,以使其左侧和右侧与FirstName TextView相同。
然后,我告诉布局我希望将FirstName EditText放置在FirstName TextView的右侧。但是,我希望通过将宽度设置为0dp并将正确的约束条件设置为parent
来拉伸以填充屏幕的其余部分。最后,我告诉它限制其顶部和底部与FirstName TextView相同。
我对LastName EditText重复了相同的操作。
您可以继续对其他视图执行相同的操作,并通过正确告知布局要放置视图的位置来创建所需的确切布局。
使用此功能的好处是您不必创建嵌套的布局,并且可以在不同的屏幕尺寸上很好地进行调整。
答案 3 :(得分:0)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:weightSum="10"
>
<TextView
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:text="Label Goes Here:"
android:textColor="#fff"
/>
<EditText
android:layout_weight="7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:background="#fff"
/>
</LinearLayout>
</LinearLayout>