37

我正在尝试将左图标添加到我的 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>
4

7 回答 7

41

确保您使用的是最新的Design库,两者都Design需要AppCompat

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>
于 2016-02-27T17:43:13.437 回答
17

With the Material Components library you can change the left icon in the TextInputLayout using the app:startIconDrawable attribute.

Something like:

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

enter image description here

于 2019-09-05T19:04:22.870 回答
5

这是我的代码布局:

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

安卓:drawablePadding="10dp"

这是工作

于 2016-09-13T11:40:27.093 回答
3

这是在 Android 的问题跟踪器上报告的错误

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

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

dependencies {
    compile 'com.android.support:design:25.0.1'
}
于 2016-11-16T03:37:06.583 回答
2

很简单,当添加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" />

于 2018-10-18T06:56:31.217 回答
1

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

app:startIconDrawable="@drawable/ic_baseline_content_paste_24"
于 2021-07-20T13:53:19.737 回答
0

是的。目前它是布局上的一个错误。您可以尝试将 leftPadding 赋予 EditText 或在文本前赋予一些空格。

于 2015-06-24T07:07:29.340 回答