如何在水平LinearLayout中正确对齐TextView和EditText?

时间:2016-07-15 07:21:48

标签: android android-layout android-edittext android-linearlayout

我正试图平衡我的EditText次观看。 但我似乎无法让它们正确排列,我无法增加EditText的大小。起初我用RelativeLayout尝试了它,这让我可以准确定位,但尺寸仍然没有。我想如果我切换到水平LinearLayout,那么我可以使用layout_weight调整两个字段,EditText会自动填充空格,但情况似乎并非如此。有什么建议吗? 在屏幕上显示时,此自定义视图会添加到垂直LinearLayout

我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="1dp"
    android:weightSum="1"
    android:orientation="horizontal">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.6"
        android:gravity="center_vertical"
        android:textColor="@color/ws_blue"
        android:background="#00ffff"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Settings Item: "
        android:id="@+id/itemLabel" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.4"
        android:textColor="@color/ws_blue"
        android:textColorHint="@color/ws_hint"
        android:background="#ffff00"
        android:id="@+id/et_item_value" />

</LinearLayout>

Android Studio预览:

Android Studio Preview

我手机的实际屏幕截图:

Phone Screenshot

4 个答案:

答案 0 :(得分:4)

enter image description here这是您的代码: 下面的代码与您显示屏幕截图的布局文件相同。

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp">
    <TableRow>
        <TextView
            android:layout_weight="1"
            android:gravity="center"
            android:text="Device ID:"
            android:textColor="@android:color/holo_green_dark"
            android:textStyle="bold" />
        <TextView
            android:layout_weight="1"
            android:text="00:00:00:00:00:00"
            android:textColor="@android:color/holo_green_dark"
            android:textStyle="bold" />
    </TableRow>
    <TableRow android:layout_marginTop="8dp">
        <TextView
            android:layout_weight="1"
            android:text="Wifi Presets:"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp"
            android:textStyle="bold" />
        <Spinner
            android:layout_marginRight="20dp"
            android:layout_weight="1"
            android:textColor="@android:color/holo_green_dark"
            android:textStyle="bold" />
    </TableRow>
    <TableRow android:layout_marginTop="8dp">
        <TextView
            android:layout_weight="1"
            android:background="@android:color/holo_blue_bright"
            android:text="SSID:"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp"
            android:textStyle="bold" />
        <EditText
            android:layout_marginLeft="16dp"
            android:layout_weight="1"
            android:background="#FFFF00"
            android:hint="SSID"
            android:textColor="@android:color/holo_blue_dark"
            android:textColorHint="@android:color/darker_gray"
            android:textSize="18sp"
            android:textStyle="bold" />
    </TableRow>
    <TableRow android:layout_marginTop="8dp">
        <TextView
            android:layout_weight="1"
            android:background="@android:color/holo_blue_bright"
            android:text="Password:"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp"
            android:textStyle="bold" />
        <EditText
            android:layout_marginLeft="16dp"
            android:layout_weight="1"
            android:background="#FFFF00"
            android:hint="Password"
            android:inputType="textPassword"
            android:textColor="@android:color/holo_blue_dark"
            android:textColorHint="@android:color/darker_gray"
            android:textSize="18sp"
            android:textStyle="bold" />
    </TableRow>
    <TableRow android:layout_marginTop="8dp">
        <TextView
            android:layout_weight="1"
            android:text="Security Type:"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp"
            android:textStyle="bold" />

        <Spinner
            android:layout_marginRight="20dp"
            android:layout_weight="1"
            android:textColor="@android:color/holo_green_dark"
            android:textStyle="bold" />
    </TableRow>
</TableLayout>

答案 1 :(得分:2)

尝试通过边距和填充来放大视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="1dp"
    android:weightSum="1">

    <TextView
        android:id="@+id/itemLabel"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.6"
        android:background="#00ffff"
        android:layout_margin="20dp"
        android:padding="10dp"
        android:gravity="center_vertical"
        android:text="Settings Item: "
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@android:color/holo_blue_dark"/>

    <EditText
        android:id="@+id/et_item_value"
        android:layout_margin="20dp"
        android:layout_width="0dp"
        android:padding="10dp"
        android:layout_height="match_parent"
        android:layout_weight="0.4"
        android:background="#ffff00"
        android:textColor="@android:color/holo_blue_dark"
        android:textColorHint="@android:color/darker_gray"/>

</LinearLayout>

答案 2 :(得分:2)

我认为您最好的选择是使用GridLayout。你可以用

<GridLayout
....
android:columnCount="2">

如果您需要更大的EditText,可以使用

设置更多columnsCount和span
<EditText
.....
android:layout_columnSpan="2"/>

答案 3 :(得分:1)

除了建议的答案,您还可以使用百分比支持库。此库由Google创建,可让您创建RelativeLayoutFrameLayout,并具有额外优势:定义宽度,高度和边距的百分比。要使用它,只需将以下行添加到Gradle应用程序文件中:

compile 'com.android.support:percent:23.3.0' // note that the version number 
                                             // might change due to updates

添加此依赖项后,您可以像下面这样使用它:

<android.support.percent.PercentRelativeLayout
     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/itemLabel"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:alignParentLeft="true"
         android:background="#00ffff"
         android:layout_marginLeftPercent="10%"
         android:gravity="center_vertical"
         android:text="Settings Item: "
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:textColor="@android:color/holo_blue_dark"/>

    <EditText
        android:id="@+id/et_item_value"
        app:layout_marginRightPercent="10%"
        android:alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_widthPercent="40%"
        android:background="#ffff00"
        android:textColor="@android:color/holo_blue_dark"
        android:textColorHint="@android:color/darker_gray"/>

 </android.support.percent.PercentRelativeLayout>

请注意,这只是一个示例,您可以根据需要进行修改

有关百分比支持库的详细信息,请按照此link

进行操作

希望这会有所帮助:)