TextInputLayout 中的 EditText 在顶部留空 space
EditText inside TextInputLayout leaves empty space at the top
我有密码字段,我想实现 hide/show 密码功能。所以我使用了 TextInputLayout。但是,如果我在 TextInputLayout 中使用 EditText,它会在布局顶部留空 space。而且我需要将该密码字段的高度变小。有了那个差距,这是不可能的。
我试图将 EditText 的高度设置为负值,但它没有用。
android:layout_height="45dp" 用于缩小该字段,但它根本不起作用。 wrap_content 让它变得更高。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginEnd="45dp"
android:layout_marginStart="42dp"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="16sp" />
</android.support.design.widget.TextInputLayout>
图片:
XML 代码 - 完整(我不得不删除颜色和图像 + 顶部工具栏,但逻辑相同)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainLoginLayout"
android:orientation="vertical"
android:clickable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/loginLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageLogin"
android:layout_width="210dp"
android:layout_height="210dp"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/emailLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="E-mail"
android:textColor="@color/colorBlack"
android:textSize="16sp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
/>
<EditText
android:id="@+id/emailTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="45dp"
android:layout_marginStart="45dp"
android:backgroundTint="@color/colorBlack"
android:inputType="textEmailAddress"
android:textColor="@color/colorBlack"
android:textSize="16sp" />
<TextView
android:id="@+id/passwordLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password"
android:textColor="@color/colorBlack"
android:textSize="16sp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
/>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/login_password_padding"
android:layout_marginStart="@dimen/login_password_field_padding"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@android:color/black">
<android.support.design.widget.TextInputEditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="@dimen/login_password_label_textsize" />
</android.support.design.widget.TextInputLayout>
<LinearLayout
android:id="@+id/default_login_button"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:clickable="true"
android:focusable="true"
android:layout_height="55dp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
android:layout_marginTop="45dp"
android:background="@color/colorBlack">
<ImageView
android:id="@+id/loginButtonIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/LoginButtonLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:text="Login"
android:textAppearance="@style/FilledLoginButtonTextAppearance" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
因为您已经完成了 TextInputLayout 的修复
android:layout_height="45dp"
请改为wrap_content
使用TextInputEditText
代替EditText
A special sub-class of EditText designed for use as a child of TextInputLayout.
Using this class allows us to display a hint in the IME when in
'extract' mode.
我认为你必须使用 android.support.design.widget.TextInputEditText
而不是 EditText
。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginEnd="45dp"
android:layout_marginStart="42dp"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="16sp" />
</android.support.design.widget.TextInputLayout>
这是与您的问题相关的我的代码,它在项目中正常工作。用你自己的方式试试这个
别忘了评论。
<android.support.design.widget.TextInputLayout
android:id="@+id/input_Layout_Signup_Password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/input_Layout_Signup_Phone"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent"
android:layout_margin="5dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/input_Signup_Password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:layout_marginRight="10dp"
android:inputType="textPassword"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
I think you see this on layout preview . compile it try to run then
you see its working gud. this gap is because you use floating edit
text. – Harwinder Singh
这成功了!
向 TextInputLayout 添加底部填充
android:paddingBottom="11dp"
我有密码字段,我想实现 hide/show 密码功能。所以我使用了 TextInputLayout。但是,如果我在 TextInputLayout 中使用 EditText,它会在布局顶部留空 space。而且我需要将该密码字段的高度变小。有了那个差距,这是不可能的。 我试图将 EditText 的高度设置为负值,但它没有用。 android:layout_height="45dp" 用于缩小该字段,但它根本不起作用。 wrap_content 让它变得更高。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginEnd="45dp"
android:layout_marginStart="42dp"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="16sp" />
</android.support.design.widget.TextInputLayout>
图片:
XML 代码 - 完整(我不得不删除颜色和图像 + 顶部工具栏,但逻辑相同)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainLoginLayout"
android:orientation="vertical"
android:clickable="true"
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/loginLayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageLogin"
android:layout_width="210dp"
android:layout_height="210dp"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/emailLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="E-mail"
android:textColor="@color/colorBlack"
android:textSize="16sp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
/>
<EditText
android:id="@+id/emailTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="45dp"
android:layout_marginStart="45dp"
android:backgroundTint="@color/colorBlack"
android:inputType="textEmailAddress"
android:textColor="@color/colorBlack"
android:textSize="16sp" />
<TextView
android:id="@+id/passwordLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Password"
android:textColor="@color/colorBlack"
android:textSize="16sp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
/>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/login_password_padding"
android:layout_marginStart="@dimen/login_password_field_padding"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@android:color/black">
<android.support.design.widget.TextInputEditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="@dimen/login_password_label_textsize" />
</android.support.design.widget.TextInputLayout>
<LinearLayout
android:id="@+id/default_login_button"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:clickable="true"
android:focusable="true"
android:layout_height="55dp"
android:layout_marginStart="45dp"
android:layout_marginEnd="45dp"
android:layout_marginTop="45dp"
android:background="@color/colorBlack">
<ImageView
android:id="@+id/loginButtonIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/LoginButtonLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center_horizontal"
android:text="Login"
android:textAppearance="@style/FilledLoginButtonTextAppearance" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
因为您已经完成了 TextInputLayout 的修复
android:layout_height="45dp"
请改为wrap_content
使用TextInputEditText
代替EditText
A special sub-class of EditText designed for use as a child of TextInputLayout.
Using this class allows us to display a hint in the IME when in 'extract' mode.
我认为你必须使用 android.support.design.widget.TextInputEditText
而不是 EditText
。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginEnd="45dp"
android:layout_marginStart="42dp"
app:passwordToggleDrawable="@drawable/login_password_eye"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/passwordTextField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorDivider"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:singleLine="true"
android:textColor="@color/colorItemMajor"
android:textSize="16sp" />
</android.support.design.widget.TextInputLayout>
这是与您的问题相关的我的代码,它在项目中正常工作。用你自己的方式试试这个 别忘了评论。
<android.support.design.widget.TextInputLayout
android:id="@+id/input_Layout_Signup_Password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/input_Layout_Signup_Phone"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent"
android:layout_margin="5dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/input_Signup_Password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:layout_marginRight="10dp"
android:inputType="textPassword"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
I think you see this on layout preview . compile it try to run then you see its working gud. this gap is because you use floating edit text. – Harwinder Singh
这成功了!
向 TextInputLayout 添加底部填充
android:paddingBottom="11dp"