将TextInputLayout与app:passwordToggleEnabled="true"
EditText文本一起使用时,重力不能很好地居中,如照片中所示。有什么帮助吗?
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintEnabled="false"
app:passwordToggleEnabled="true">
<EditText
android:gravity="center"
android:id="@+id/passwordEt"
style="@style/editTextStyle"
android:layout_marginBottom="20dp"
android:hint="@string/password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
和文字样式
<style name="editTextStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">50dp</item>
<item name="android:layout_margin">8dp</item>
<item name="android:background">@drawable/text_fields</item>
<item name="android:padding">15dp</item>
</style>
答案 0 :(得分:4)
只需在EditText
的左侧添加透明drawable。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_password_space"
android:drawableStart="@drawable/ic_password_space"
android:gravity="center" />
</android.support.design.widget.TextInputLayout>
对于透明绘图,您可以使用android:width="48dp"
。
创建可绘制资源文件@drawable/ic_password_space.xml
。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="1dp"
android:viewportWidth="1.0"
android:viewportHeight="1.0">
<path
android:pathData="M"
android:fillColor="#0000"/>
</vector>
答案 1 :(得分:1)
将left-drawable添加到内部id brand any_value_of_x_true
1 Bmw true
2 Audi false
3 VW false
将不会生效(至少与支持lib.v26.1.0一样)。
向内部EditText
添加左边距会产生一些影响,但EditText
的内容仍然无法正确居中 - 无论你将使用什么值进行填充。
我找到的唯一可行解决方案(除了子类化或使用第三方库) - 是将EditText
添加到drawablePadding
。所以在xml中它看起来像:
EditText
但它有点hacky,因为android:drawablePadding="-48dp"
的实施可能会在未来发生变化。因此,使用它需要您自担风险。
答案 2 :(得分:0)
如果隐藏密码,则在编辑文本的两边上添加空的48dp可绘制对象,当editText为空时切换。否则,光标最初不会居中。
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_password_toggle_space"
android:drawableEnd="@drawable/ic_password_toggle_space"
android:gravity="center" />
要创建空的可绘制对象,可以在可绘制资源中添加一个空白矢量 ic_password_toggle_space.xml 文件:-
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="1dp"
android:viewportWidth="1.0"
android:viewportHeight="1.0">
<path
android:pathData="M"
android:fillColor="#0000"/>
</vector>