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>
最新のDesign
ライブラリを使用していることを確認してください。Design
とAppCompat
の両方に必要なのは次のとおりです。
compile 'com.Android.support:design:23.2.0'
デザインのライブラリ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>
これはAndroidのIssue Trackerで報告されたバグです
https://code.google.com/p/Android/issues/detail?id=225836
そして現在、Design Support Library(v25.0.1)の最新リリースで修正されています。ビルドグラドルに必要な依存関係を追加するだけです...
dependencies {
compile 'com.Android.support:design:25.0.1'
}
コードレイアウトは次のとおりです。
<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"
その仕事
Material Componentsライブラリ を使用すると、 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>
はい。現在、レイアウト上のバグです。あなたはEditTextにleftPaddingを与えるか、テキストの前にいくつかのblank_spacesを与えることができます。
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" />