我最近发现了 Material Design TexInputLayout 的一个错误以及它使 endIcon 可见的方式。
假设您已正确设置所有内容并启用了结束图标,例如:
inputLayout.endIconMode == END_ICON_CLEAR_TEXT
Run Code Online (Sandbox Code Playgroud)
问题是,如果你定义一个 focusListener 像:
inputLayout.editText?.setOnFocusChangeListener { view, hasFocus -> ...}
Run Code Online (Sandbox Code Playgroud)
并导航到其中包含此 textInputLayout 的屏幕,其中包含一些已填充的文本,如下图所示

您会注意到 endIcon 没有显示,但如果您点击它应该在的位置,它就会起作用。
即使通过使其可见来确保它应该显示也inputLayout.isEndIconVisible = 无济于事。通过调试,您可以看到您点击了public void setEndIconVisible(boolean visible)真实值,但仍然没有使图标可见。
我找到了一个解决方案,我已将其作为答案发布。
我想给TextInputLayout中的edittext提示添加填充
电子邮件地址是提示,样本是文本
也尝试了此解决方案,但没有用。
更改支持设计库23.1.0后面临此问题
这是我的代码
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/edtEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/border_round_edt_grey"
android:focusableInTouchMode="true"
android:hint="@string/emailadd"
android:padding="10dp"
android:singleLine="true" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud) 我尝试在 ConstraintLayout 中使用支持设计库中的 TextInputLayout,但出现错误:
android.widget.LinearLayout$LayoutParams
cannot be cast to android.support.constraint.ConstraintLayout$LayoutParams
Run Code Online (Sandbox Code Playgroud)
如何实现与 support.design.widget.TextInputLayout 相同的功能,但使用 ConstraintLayout?
完整布局在这里:http : //pastebin.com/TjC0FAdS
问题是:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/constraintLayout">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:layout_width="0dp"
android:layout_height="0dp"
android:singleLine="true"
android:id="@+id/email"
android:hint="@string/prompt_email"
app:layout_constraintLeft_toRightOf="@+id/imageView3"
android:layout_marginStart="8dp"
app:layout_constraintTop_toBottomOf="@+id/logo"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="@+id/constraintLayout"
android:layout_marginEnd="16dp" />
</android.support.design.widget.TextInputLayout>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个登录页面,这是我TextInputLayout的密码字段。
<android.support.design.widget.TextInputLayout
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:hint="Password"
app:passwordToggleDrawable="@drawable/eye_outline"
android:theme="@style/GFSTextInputLayoutTheme"
app:passwordToggleEnabled="true">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:textColor="@color/black"
android:textColorHint="@color/light_grey"
android:textSize="20dp" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
但不知何故,app:passwordToggleEnabled="true"似乎不起作用。
这是我的 gradle 导入:
compile 'com.android.support:design:27.1.1'
compile 'com.android.support:support-v4:27.1.1'
compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support:recyclerview-v7:27.1.1'
compile 'com.android.support:support-vector-drawable:27.1.1'
compile 'com.android.support.constraint:constraint-layout:1.1.0'
compile 'com.android.support:recyclerview-v7:27.1.1'
compile 'com.android.support:cardview-v7:27.1.1'
Run Code Online (Sandbox Code Playgroud)
编辑:
样式文件
<style name="GFSTextInputLayoutTheme" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/light_grey</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/light_grey</item>
<item name="colorControlNormal">@color/light_grey</item>
<item …Run Code Online (Sandbox Code Playgroud) java passwords android android-textinputlayout textinputlayout
我在文本输入布局中有一个前缀文本,但仅当我单击文本输入编辑文本(位于具有前缀文本的文本输入布局内)时,它才会显示。如何使前缀文本始终显示提示
下面是我的文本输入编辑文本
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/til_number"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/til_country"
android:layout_marginStart="30dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="10dp"
android:padding="5dp"
app:boxBackgroundColor="#EFEFF2"
app:prefixText="+01 - "
app:shapeAppearanceOverlay="@style/RoundedTextInputLayout">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/number"
android:inputType="phone"
android:maxLength="100"
android:textSize="15sp" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我想实现的是
+01 - 
Run Code Online (Sandbox Code Playgroud)
前缀中的上述文本应始终显示
我尝试执行以下操作
app:prefixTextColor="@color/secondaryDarkColor"
Run Code Online (Sandbox Code Playgroud) prefix android-studio android-textinputlayout textinputlayout
我在iOS(Objc)中搜索一个textinputLayout像android一样的库.
这里是更清晰的视频网址, https://youtu.be/YnQHb0fNtF8
任何人都可以告诉我是否有任何第三方库可用,或者我需要在动画的帮助下编写自己的代码.
我正在使用带有TextInputLayout的EditText.这是我用来显示错误的代码.
private boolean validateEmail() {
String email = inputEmail.getText().toString().trim();
if (email.isEmpty() || !isValidEmail(email)) {
inputLayoutEmail.setErrorEnabled(true);
inputLayoutEmail.setError(getString(R.string.err_msg_email));
requestFocus(inputEmail);
return false;
} else {
inputLayoutEmail.setErrorEnabled(false);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我在edittext的textwatcher中调用此方法,如此链接http://www.androidhive.info/2015/09/android-material-design-floating-labels-for-edittext/
一旦我输入有效输入然后清除它,它将按预期显示错误消息,但如果我再次输入文本然后再次清除它将无法工作.我没有显示任何错误消息.
我正在使用compile 'com.android.support:design:23.1.0'图书馆.
inputLayoutEmail.setErrorEnabled(true);
Run Code Online (Sandbox Code Playgroud)
正在调用,但错误未显示.可能是什么问题?我怎么能解决这个问题?
我的布局中有多个 TextInputLayouts,我需要验证字段(如果它们无效,则显示错误文本)。
但是TextView包含错误是由TextInputLayout动态添加的,因此它会更改布局高度,并且底部的所有视图都降低了 added 的高度TextView。
所以问题是:即使没有显示错误,我是否可以为错误文本保留空间?
当我想在 EditText 中写我的提示与 OutlinedBox 重叠时,我的提示有问题,所以我不明白是什么问题。所以这是我的代码
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/text_input_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:drawableStart="@drawable/ic_action_name"
android:hint="@string/Enter_Username"
android:inputType="textPersonName"/>
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我的问题:
xml android android-textinputlayout textinputlayout material-components-android
我在设置错误消息时遇到TextInputLayout问题.我在片段中使用以下包'com.android.support:design:23.1.1'.这是代码
if (tvName.getText().toString().trim().isEmpty()) {
textInputLayoutName.setErrorEnabled(true);
textInputLayoutName.setError("erreur");
}
Run Code Online (Sandbox Code Playgroud)
XML部分
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextLabel"
android:id="@+id/input_layout_name">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/name"
android:hint="@string/name"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
风格
<style name="TextLabel" parent="TextAppearance.AppCompat">
<item name="android:textColorHint">@android:color/darker_gray</item>
<item name="android:textSize">20sp</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="colorControlNormal">#2E7D32</item>
<item name="colorControlActivated">#1B5E20</item>
</style>
Run Code Online (Sandbox Code Playgroud)
而这里的错误
FATAL EXCEPTION: main
Process: com.example.adama.findmypharmacie, PID: 21169
java.lang.UnsupportedOperationException: Can t convert to color: type=0x2
at android.content.res.TypedArray.getColor(TypedArray.java:327)
at android.widget.TextView.<init>(TextView.java:695)
at android.widget.TextView.<init>(TextView.java:637)
at android.widget.TextView.<init>(TextView.java:633)
at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:380)
at android.support.design.widget.TextInputLayout.setError(TextInputLayout.java:425)
at com.example.adama.findmypharmacie.fragments.MainFragment.onClick(MainFragment.java:185)
at android.view.View.performClick(View.java:4463)
at android.view.View$PerformClick.run(View.java:18789)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515) …Run Code Online (Sandbox Code Playgroud) 我只想使用 Alphabat、空格和“-”作为使用“Textinput”的名称输入。
用法:- 对于用户名输入,我们不希望用户输入“(,),$,%,&,*”字符。
textinputlayout ×11
android ×8
xml ×2
flutter ×1
fragment ×1
ios ×1
java ×1
material-components-android ×1
objective-c ×1
passwords ×1
prefix ×1
validation ×1