【问题标题】:Align TextView and EditText left in vertically oriented LinearLayout在垂直方向的 LinearLayout 中对齐 TextView 和 EditText
【发布时间】:2017-03-16 15:39:22
【问题描述】:

我使用LinearLayout 作为视图组,其中包含两个孩子(TextViewEditText)。我的 XML 代码如下所示:

<?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="match_parent"
    android:layout_margin="16dp"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text View"
        android:textSize="20sp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Edit Text"
        android:textSize="20sp" />

</LinearLayout>

这将产生以下设计:

如左侧放大视图所示,TextViewEditText 在垂直方向上对齐不均(EditText 缩进更多,如红色小箭头所示)。

似乎在提示和下方的线周围有一点填充(一些dp),以防止它们“触摸”其视野的左边缘。有什么办法可以强制EditText 中的提示挤到其视野的左侧?

我怎样才能摆脱这种缩进,除了添加填充和边距

感谢您的任何想法和建议!

【问题讨论】:

    标签: android xml android-edittext android-linearlayout


    【解决方案1】:

    在不添加任何填充和边距的情况下,您可以使用自定义可绘制对象作为Edittext 的背景来删除默认填充

    在drawable/edittext_bg.xml中

     <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <shape android:shape="rectangle">
                <solid android:color="@android:color/transparent" />
            </shape>
        </item>
    
        <item
            android:top="-2dp"
            android:right="-2dp"
            android:left="-2dp">
            <shape>
                <solid android:color="@android:color/transparent" />
                <stroke
                    android:width="1dp"
                    android:color="#000000" />
            </shape>
        </item>
    </layer-list>
    

    现在在你的编辑文本中使用它:

    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/edittext_bg"
            android:hint="Edit Text"
            android:textSize="20sp" />
    

    输出:

    【讨论】:

      【解决方案2】:

      不应该这样……你应该检查你的style.xml,也许你在那里设置了额外的边距。

      另外,尝试指定 layout_gravity:"left" 属性。

      【讨论】:

      • layout_gravity 不会改变提示在EditText 中的位置,它会整体改变EditText 的位置
      【解决方案3】:

      尝试在 Edit Text 上输入字母,然后您可以看到 textview 和 edit text 都对齐了

      【讨论】:

      • 不,在EditText 上输入内容时对齐不均匀...
      【解决方案4】:

      你试过Constraint layout吗?它消除了在 xml 布局中具有如此多层次结构的需要,并且易于使用。

      【讨论】:

      • 使用ConstraintLayout 是一样的,因为问题不是视图组而是EditText 本身,即提示周围的填充。
      • 然后自己做一个自定义的EditText,去掉提示的左边padding/margin,问题就解决了:)
      【解决方案5】:

      此预览,运行模拟器以获得正确的预览。 但是,为了获得最佳效果,请使用 https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html

      【讨论】:

      • 我在真机和模拟器上都运行过,缩进依然存在...
      • 可以尝试 TextInputLayout 是针对这种情况的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多