我正在尝试使用show password imageView为密码设计EditText
。但是我无法正确设计,因为ImageView
,我无法看到EditText's layout_width="fill_parent"
。当我将其更改为wrap_content
时,我可以看到我的ImageView
,但在UI中看起来非常糟糕。是否可以设计它而不给出固定的尺寸?
这是我的代码;
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/registerPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/register_password"
android:inputType="textPassword" />
<ImageView
android:id="@+id/fragment_login_password_visibility"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@android:drawable/ic_partial_secure"
android:layout_gravity="center"
android:clickable="true"/>
</LinearLayout>
</android.support.design.widget.TextInputLayout>
编辑:
android:layout_weight = 1解决了问题。现在我可以在EditText左侧看到ImageView。但是现在,我的TextInputLayout提示不起作用。
答案 0 :(得分:4)
您不需要使用ImageView。
支持库在recent update(版本24.2.0 - 2016年8月)中添加了对密码可见性切换的支持。
试一试:
setPasswordVisibilityToggleDrawable(int resId)
设置用于密码可见性切换按钮的图标。
https://developer.android.com/reference/android/support/design/widget/TextInputLayout.html
答案 1 :(得分:0)
你尝试过使用体重吗?
android:layout_weight="1"
和
android:layout_width="0dp"
或android:layout_width="wrap_content"
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<EditText
android:id="@+id/registerPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="@string/register_password"
android:inputType="textPassword" />
<ImageView
android:id="@+id/fragment_login_password_visibility"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@android:drawable/ic_partial_secure"
android:layout_gravity="center"
android:clickable="true"/>
</LinearLayout>
</android.support.design.widget.TextInputLayout>
答案 2 :(得分:0)
首先将android:weightSum
的{{1}}设置为&#34; 1&#34;。然后,将LinearLayout
的{{1}}和android:layout_width
设置为&#34; 0dp&#34;和&#34; 1&#34;分别。
答案 3 :(得分:0)
试试这个:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/editText"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Password"
android:singleLine="true"
android:textSize="25sp"
android:paddingRight="60dp"
/>
<ImageButton
android:id="@+id/showpass"
android:layout_marginLeft="-60dp"
style="?android:buttonBarButtonStyle"
android:paddingBottom="5dp"
android:src="@drawable/pass_ic"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
答案 4 :(得分:0)
我建议使用带有passwordToggleDrawable的TextInputLayout。
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputPasswordLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:passwordToggleContentDescription="Show"
app:passwordToggleDrawable="@drawable/ic_password_visibility_selector"
app:passwordToggleEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/textInputEditTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:fontFamily="sans-serif-light"
android:gravity="bottom"
android:hint="@string/enter_your_password"/>
</android.support.design.widget.TextInputLayout>
app:passwordToggleDrawable="@drawable/ic_password_visibility_selector"
分配您的drawable