TextInputLayout 中的左图标

Left Icon in TextInputLayout

我正在尝试向我的 TextInputLayout 添加左图标,但文本覆盖了该图标。 当我添加填充时,所有内容都会一起移动。

我试过

 android:drawableLeft="@drawable/ic_store_white_48dp"
 android:drawablePadding="50dp"
 android:drawableStart="@drawable/ic_store_white_48dp"

但它不起作用! 我应该为每一行实现一个 LinearLayout 水平,但我想确保没有更简单的方法来做到这一点

这是我的代码布局:

        <android.support.design.widget.TextInputLayout
            android:id="@+id/til_calle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">


            <EditText
                android:id="@+id/et_calle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/ic_store_white_48dp"
                android:drawablePadding="50dp"
                android:drawableStart="@drawable/ic_store_white_48dp"
                android:hint="Calle"
                android:inputType="text" />

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

是的。目前它是布局上的一个错误。 您可以尝试将 leftPadding 提供给 EditText 或在文本前提供一些 blank_spaces。

确保您使用的是最新的 Design 库,DesignAppCompat 所需的全部是:

compile 'com.android.support:design:23.2.0'

尝试同时使用 Design 的库 TextInputLayout 和 AppCompat 的 AppCompatEditText

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:textColor="@android:color/white"
    android:textColorHint="@color/loginHint">

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:imeOptions="actionNext"
        android:inputType="textEmailAddress|textNoSuggestions"
        android:minWidth="350dp"
        android:drawableLeft="@drawable/ic_store_white_48dp"
        android:drawableStart="@drawable/ic_store_white_48dp"
        android:textColor="@android:color/white"
        android:textColorHint="@color/loginHint"
        android:textCursorDrawable="@null"
        app:backgroundTint="@android:color/white"/>
</android.support.design.widget.TextInputLayout>

Here is my code layout:

 <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_username"
            android:layout_width="match_parent"

            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/input_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:drawableLeft="@drawable/icon_user"
                android:drawableStart="@drawable/icon_user"
                android:drawablePadding="10dp"
                android:hint="User Name" />
        </android.support.design.widget.TextInputLayout>

android:drawablePadding="10dp"

它的作品

这是在 Android 的问题跟踪器

上报告的错误

https://code.google.com/p/android/issues/detail?id=225836

它现在已在最新版本的设计支持库 (v25.0.1) 中得到修复。只需将所需的依赖项添加到构建 gradle...

dependencies {
    compile 'com.android.support:design:25.0.1'
}

很简单,添加passwordToggleEnabled时自动添加右侧的眼睛图标,drawableLeft消失了。所以你必须删除 drawableLeft 并只使用 drawableStart.

<android.support.design.widget.TextInputLayout
        android:id="@+id/til_calle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

      <EditText
            android:id="@+id/et_calle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawablePadding="50dp"
            android:drawableStart="@drawable/ic_store_white_48dp"
            android:hint="Calle"
            android:inputType="text" />

使用 Material Components library you can change the left icon in the TextInputLayout app:startIconDrawable 属性。

类似于:

    <com.google.android.material.textfield.TextInputLayout
        android:hint="Hint text"
        app:startIconDrawable="@drawable/ic_add_24px"
        ...>

        <com.google.android.material.textfield.TextInputEditText/>

    </com.google.android.material.textfield.TextInputLayout>

如果您正在使用 material 输入布局,那么您只需在输入布局的 xml 代码中添加一行

app:startIconDrawable="@drawable/ic_baseline_content_paste_24"