TextInputLayout内に長方形の編集テキストがあります。フローティングラベルと編集テキストの長方形の境界の間にマージンを入れたいのですが、それができません。さまざまなマージンパラメータを試しましたが、うまくいきませんでした。
この画像では、フローティングラベルが長方形の編集テキストの上限に固定されていることがわかります。しかし、ラベルと上限の間にいくらかのスペースが必要です。よろしくお願いします。
以下はEditTextのXMLコードです
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
>
<EditText
Android:id="@+id/input_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="email"
Android:background="@drawable/textbg"/>
以下は背景ドローアブルのコードです
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<stroke Android:width="1dp"
Android:color="@color/colorPrimary"/>
/>
<padding
Android:left="15dp"
Android:right="15dp"
Android:top="15dp"
Android:bottom="15dp" />
</shape>
ラベルの位置TextInputLayoutをカスタマイズすることはできないと思います。また、TranslationYを使用すると、ビューが変換されるため、フローティングラベルの位置を変更するのに適したソリューションではありません。他に答えがあれば教えてください。
TextInputLayoutに手動で高さを指定できます。
Android:layout_height="100dp"
それは私のために働きます。
上からパディングを取得するには、レイヤーリストで描画可能な背景を使用します。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:top="10dp">
<shape Android:shape="rectangle">
<!-- view background color -->
<solid Android:color="@Android:color/transparent"></solid>
<stroke
Android:width="1dp"
Android:color="@color/colorAccent" />
<!-- If you want to add some padding -->
<padding
Android:bottom="10dp"
Android:left="10dp"
Android:right="10dp"
Android:top="10dp"></padding>
</shape>
</item>
</layer-list>
使用法
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="@string/label_quantity"
Android:textColorHint="@color/colorOrange"
app:errorEnabled="true"
app:errorTextAppearance="@style/ErrorText">
<Android.support.design.widget.TextInputEditText
Android:layout_width="match_parent"
Android:layout_height="@dimen/login_edit_text_height"
Android:background="@drawable/drawable_background"
Android:imeOptions="actionNext"
Android:inputType="number"
Android:maxLines="1"/>
</Android.support.design.widget.TextInputLayout>
EditTextにカスタム背景を設定している場合、Android:paddingTop属性simpleは、フローティングヒントテキストと編集テキストの間隔を変更するために機能しません。したがって、EditTextにカスタム背景を設定している場合は、EditTextでAndroid:translationY属性を使用できます。
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/input_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="email"
Android:translationY="10dp"
Android:background="@drawable/textbg"/>
</Android.support.design.widget.TextInputLayout>
お役に立てれば :)
EditTextカスタム背景に追加するだけです
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<padding
Android:top="4dp"/> // your padding value
</shape>
</item>
// customize your background items if you need
</layer-list>
<Android.support.design.widget.TextInputLayout
...>
<Android.support.design.widget.TextInputEditText
...
Android:background="@style/your_custom_background"/>
次に、それをEditTextに適用し、fix heightを使用する場合は、パディング値を使用してEditTextの高さを増やします。
(テスト済みコード100%動作中) TextInputLayoutの高さはEditTextより大きくする必要があります。次に、GRAVITYを設定します。
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="65dp"
Android:gravity="bottom">
<EditText
Android:id="@+id/etName"
Android:layout_width="match_parent"
Android:layout_height="40dp"/>
<Android.support.design.widget.TextInputLayout/>
そのためには、次のようにedittextからtextinputlayoutに背景を配置する必要があります
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/textbg"
>
<EditText
Android:id="@+id/input_password"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="email"/>
ドローアブルファイルでパディングトップを指定するだけです。