TextInputLayout中的左侧图标

时间:2015-06-19 16:59:10

标签: android android-textinputlayout

我正在尝试向TextInputLayout添加一个左图标,但是文本会覆盖Icon。 当我添加填充时,一切都会一起移动。

我试过

 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>

7 个答案:

答案 0 :(得分:27)

确保您使用的是最新的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>

答案 1 :(得分:3)

  

这是我的代码布局:

 <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 =&#34; 10dp&#34;

它的工作

答案 2 :(得分:3)

这是在Android的问题跟踪器

上报告的错误

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

现在已在最新版本的Design Support Library(v25.0.1)中修复了它。只需将所需的依赖项添加到构建gradle ...

git-clean

答案 3 :(得分:2)

通过Material Components library,您可以使用 app:startIconDrawable 属性更改TextInputLayout中的左侧图标。

类似的东西:

    <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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

app:startIconDrawable="@drawable/ic_baseline_content_paste_24"