我有密码字段,我想实现隐藏/显示密码功能。所以我使用了TextInputLayout。但是如果我在TextInputLayout中使用EditText,它会在布局的顶部留下空白空间。我需要让密码字段的高度更小。由于存在这种差距,这是不可能的。 我试图将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>
答案 0 :(得分:2)
使用TextInputEditText
代替EditText
EditText的一个特殊子类,旨在用作TextInputLayout的子级。
使用此类允许我们在进入时在IME中显示提示 '提取'模式。
答案 1 :(得分:1)
我认为您必须使用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>
答案 2 :(得分:1)
我认为您在布局预览中看到了这一点。编译它尝试运行然后 你看到它的工作gud。这个差距是因为你使用浮动编辑 文本。 - Harwinder Singh
这很有用!
答案 3 :(得分:0)
这是我的代码,与您的问题及其在项目中的正常工作有关。以自己的方式尝试 并且不要忘记发表评论。
<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>
答案 4 :(得分:0)
将底部填充添加到TextInputLayout
Stream fs = img.ImageFile.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
byte[] bytes = br.ReadBytes((Int32)fs.Length);
答案 5 :(得分:-1)
因为你已经用
修复了TextInputLayout android:layout_height="45dp"
请更改为wrap_content