垂直和水平对齐的小部件

时间:2019-01-13 09:37:09

标签: android

我想创建一个布局,就像下面的图片一样,但是我真的不知道我应该使用哪种布局模式来实现这一点。我知道如何也可以水平和垂直对齐小部件,但是不知道如何在同一时间垂直和水平对齐小部件。正如您在下图中所看到的,有一列TextView和一列EditText,并且每一行TextViewEditText小部件对齐,知道如何对齐,但是如您所见,TextView也是垂直对齐的,EditText也是对齐的,我不知道如何在不失去垂直对齐或水平对齐的情况下实现这一点。 / p>

Layout

4 个答案:

答案 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

这是一个很棒的教程/说明:

https://blog.stylingandroid.com/gridlayout-part-1/

答案 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>