Android - 减少 EditText 浮动标签 padding/margin?
Android - reduce EditText floating label padding/margin?
是否可以将那些浮动标签 (Email/Password) 放在框内。基本上减少提示和实际输入之间的 space。
我尝试填充 Top/Bottom。 editText 的边距 Top/Bottom。但是 none 给出了我正在寻找的结果。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:id="@+id/emailWrapper"
app:hintTextAppearance="@style/floatingLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:id="@+id/txtEmail"
android:singleLine="true"
android:inputType="textEmailAddress"
android:hint="@string/emailPlaceholder"
android:background="@drawable/btn_empty_stroke" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/floatingLabel"
android:id="@+id/passwordWrapper"
android:layout_below="@+id/emailWrapper">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:singleLine="true"
android:inputType="textPassword"
android:id="@+id/txtPassword"
android:paddingTop="0dp"
android:text="HELLO"
android:hint="@string/passwordPlaceholder"
android:background="@drawable/btn_empty_stroke" />
</android.support.design.widget.TextInputLayout>
感谢@Frank N.Stein 的评论和降低高度的想法。它成功了。
回答我自己的问题。因为其他人可能会提出这个问题。
所以基本上我必须为 TextInputLayout 提供准确的高度并保持 EditText 的高度相同。同时将 paddingTop 赋予 TextInputLayout 和 clipToPadding false。所以最终的文本框 xml 就这样出来了。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_height="54dp"
android:gravity="bottom"
android:paddingTop="4dp"
android:clipToPadding="false" // above 3 lines are important
android:id="@+id/emailWrapper"
app:hintTextAppearance="@style/floatingLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:id="@+id/txtEmail"
android:singleLine="true"
android:inputType="textEmailAddress"
android:hint="@string/emailPlaceholder"
android:text="a@a.com"
android:background="@drawable/btn_empty_stroke" />
</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:bottom="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
,如果您使用固定高度,则使用填充值增加 EditText
的高度。
是否可以将那些浮动标签 (Email/Password) 放在框内。基本上减少提示和实际输入之间的 space。
我尝试填充 Top/Bottom。 editText 的边距 Top/Bottom。但是 none 给出了我正在寻找的结果。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:id="@+id/emailWrapper"
app:hintTextAppearance="@style/floatingLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:id="@+id/txtEmail"
android:singleLine="true"
android:inputType="textEmailAddress"
android:hint="@string/emailPlaceholder"
android:background="@drawable/btn_empty_stroke" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/floatingLabel"
android:id="@+id/passwordWrapper"
android:layout_below="@+id/emailWrapper">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:singleLine="true"
android:inputType="textPassword"
android:id="@+id/txtPassword"
android:paddingTop="0dp"
android:text="HELLO"
android:hint="@string/passwordPlaceholder"
android:background="@drawable/btn_empty_stroke" />
</android.support.design.widget.TextInputLayout>
感谢@Frank N.Stein 的评论和降低高度的想法。它成功了。
回答我自己的问题。因为其他人可能会提出这个问题。
所以基本上我必须为 TextInputLayout 提供准确的高度并保持 EditText 的高度相同。同时将 paddingTop 赋予 TextInputLayout 和 clipToPadding false。所以最终的文本框 xml 就这样出来了。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_height="54dp"
android:gravity="bottom"
android:paddingTop="4dp"
android:clipToPadding="false" // above 3 lines are important
android:id="@+id/emailWrapper"
app:hintTextAppearance="@style/floatingLabel">
<EditText
android:layout_width="match_parent"
android:layout_height="54dp"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:id="@+id/txtEmail"
android:singleLine="true"
android:inputType="textEmailAddress"
android:hint="@string/emailPlaceholder"
android:text="a@a.com"
android:background="@drawable/btn_empty_stroke" />
</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:bottom="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
,如果您使用固定高度,则使用填充值增加 EditText
的高度。