对齐材料edittexts,textviews,复选框等

时间:2016-06-27 18:23:06

标签: android

我的问题是,所有这些视图都有不同的左边填充,当我将它们放在另一个下面时,它看起来很混乱。

我该如何解决?有没有很酷的方法来解决这个问题?

我试图添加一些额外的填充,例如2dp用于edittexts,4dp用于textview,但由于不同设备上的填充不同,它似乎不起作用。

示例(在Googles官方应用程序中并非如此): enter image description here 这里没有什么特别的布局,只是没有任何附加属性的视图。

<?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="vertical">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="0dip">

        <EditText
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/network_password"
            android:inputType="textPassword"/>

    </android.support.design.widget.TextInputLayout>

    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/show_password"/>

</LinearLayout>

3 个答案:

答案 0 :(得分:4)

没有很酷的方法可以做到这一点。以下策略最适合我:

答案 1 :(得分:1)

您应该在包含表单的布局中添加一个填充,而不是为每个视图添加填充。这样,所有视图都将正确对齐。

<LinearLayout
    ...
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp">

    <!--Your form inputs-->

</LinearLayout>

新创建的活动在根布局周围已经有16dp的填充。

值'16dp'应该保存为 dimen ,而不是硬编码。

答案 2 :(得分:0)

我建议以这种方式管理保证金和填充:

  1. /res/下创建多个values文件夹,具体取决于屏幕密度(例如values-w820dp),然后在这些文件夹下创建dimens.xml,并为每个屏幕密度设置正确的值。 follow this guide
  2. 如果可能,始终使用RelativeLayout 而不是LinearLayout。如果您的问题只是对齐,那么您始终可以使用RelativeLayout等属性来管理路线。