标签: android-textinputlayout

更改右侧图标样式错误TextInputLayout

我想更改右侧图标错误(带有!符号的图像)的样式TextInputLayout但我不知道如何更改。

有可能的?。

文本输入布局

android android-textinputlayout material-components material-components-android

5
推荐指数
1
解决办法
1033
查看次数

从自动完成下拉列表中选择项目时出现 IndexOutOfBoundsException

我在我的应用程序中使用TextInputLayoutandTextInputEditText以及android:inputType="textAutoComplete"and 我不允许两个单词之间有空格,因此如果我在自动完成下拉列表或拼写检查中选择带有空格的项目,我会遇到IndexOutOfBoundsException

java.lang.IndexOutOfBoundsException: setSpan (0 ... 8) ends beyond length 7
            at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1265)
            at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:684)
            at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677)
            at android.widget.TextView.setSpan_internal(TextView.java:9900)
            at android.widget.Editor.replaceWithSuggestion(Editor.java:2654)
            at android.widget.Editor.-wrap18(Editor.java)
            at android.widget.Editor$SuggestionsPopupWindow.onItemClick(Editor.java:3638)
            at android.widget.AdapterView.performItemClick(AdapterView.java:310)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1156)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3121)
            at android.widget.AbsListView$3.run(AbsListView.java:4036)
            at android.os.Handler.handleCallback(Handler.java:751)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:6119)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Run Code Online (Sandbox Code Playgroud)

在我的活动中,我使用TextWatcher

private final TextWatcher mTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

@Override …
Run Code Online (Sandbox Code Playgroud)

android android-spellcheck android-textinputlayout

5
推荐指数
0
解决办法
616
查看次数

在 TextInputLayout 中同时启用 errorEnabled 和 passwordToggleEnabled

我想在 a中将errorEnabled和 都设置为 true ,但似乎这两者不能共存,因为一个像这样覆盖另一个。passwordToggleEnabledTextInputLayout

我想这样做是因为我正在验证密码字段以匹配特定条件,并且我希望用户能够看到错误消息和已输入的密码。

这是我的代码:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:counterEnabled="true"
    app:errorEnabled="true"
    app:passwordToggleEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/password_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/password"
        android:inputType="textPassword" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

是否可以将密码切换图标移到感叹号左侧一点?或者我是否必须创建一个自定义可绘制对象并使用它而不是密码切换图标?

android android-layout xml-layout android-textinputlayout

5
推荐指数
1
解决办法
2276
查看次数

防止 TextInputLayout 使 TextInputEditText 变高

我想要密码切换功能,它似乎TextInputLayout有这个功能,而不是TextInputEditText。但正如您在下面的代码中看到的那样,即使我将高度设置为wrap_content和,如果位于 中,app:hintEnabled="false"的高度TextInputEditText也会更高。将其与外部的高度进行比较。TextInputEditTextTextInputLayoutTextInputEditTextTextInputLayout

由于我不使用该提示动画,因此无需增加TextInputLayout的高度TextInputEditText。如何防止TextInputLayout高度增加TextInputEditText

模拟器屏幕的屏幕截图。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

    <EditText
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="121dp"
        android:background="#66FF0000"
        android:text="Normal EditText"
        android:inputType="textEmailAddress"/>

    <android.support.design.widget.TextInputLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="196dp"
        app:hintEnabled="false"
        app:passwordToggleEnabled="true">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#660000FF"
            android:hint="TextInputEditText inside TextInputLayout"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputEditText
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#6600FF00"
        android:hint="TextInputEditText"
        android:inputType="textPassword"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-textinputlayout

5
推荐指数
1
解决办法
943
查看次数

TextInputLayout 和 TextInputEditText 不适用于 Theme.AppCompat.Light.NoActionBar

我想在我的应用程序中使用TextInputEditTextTextInputLayout,但它不适用于Theme.AppCompat.Light.NoActionBar. 但是如果我将它设置为Theme.MaterialComponents.Light.NoActionBar,它将毫无问题地工作,但这会破坏我在应用程序中的所有样式。

XML 中的用法:

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/nameLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    style="@style/reg_edit_text_style"
                    app:errorEnabled="true"
                    android:hint="@string/name">

                    <com.google.android.material.textfield.TextInputEditText
                        android:id="@+id/nameEt"
                        android:layout_width="match_parent"
                        android:nextFocusDown="@id/lastNameEt"
                        android:inputType="text"
                        style="@style/reg_edit_text_inner_style"/>

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

build.gradle

implementation 'com.google.android.material:material:1.1.0-alpha07'
implementation 'androidx.appcompat:appcompat:1.0.2'
Run Code Online (Sandbox Code Playgroud)

错误:

 Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).
    at com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:240)
    at com.google.android.material.internal.ThemeEnforcement.checkMaterialTheme(ThemeEnforcement.java:215)
    at com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:143)
Run Code Online (Sandbox Code Playgroud)

android android-layout android-textinputlayout

5
推荐指数
1
解决办法
1324
查看次数

TextInputLayout 的 colorControlActivated 不起作用

这是我应用程序的主要风格

<style name="Theme.RoundRobin" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorSecondaryVariant</item>
    <item name="colorAccent">@color/colorPrimaryVariant</item>
    <item name="colorControlActivated">@color/colorControlActivated</item>
    <item name="colorControlNormal">@color/colorControlNormal</item>
    <item name="colorControlHighlight">@color/colorControlNormal</item>
    <item name="android:textColorPrimary">@color/textColorPrimary</item>
    <item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

据我所知,colorControlHighlight 应该为 textinputlayout 中的下划线、标签和光标着色。

<com.google.android.material.textfield.TextInputLayout
            android:id="@+id/username_til"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="24dp"
            android:layout_marginLeft="24dp"
            android:layout_marginTop="24dp"
            android:layout_marginEnd="24dp"
            android:layout_marginRight="24dp"
            app:hintTextAppearance="@style/TextAppearance.Subtitle1"
            app:layout_constraintBottom_toTopOf="@+id/password_til"
            app:layout_constraintEnd_toEndOf="parent"
            android:hint="Username"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView">

        <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/usernameEt"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:textAppearance="@style/TextAppearance.Body2"/>
    </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

没有一个 colorControls 应该与新的 MaterialCompoents 一起使用。

我在这里错过了什么吗

我给了我的 TextInput 这种样式,但它看起来好像 MaterialComponents 不能很好地与 colorControlsX 一起使用

<style name="Widget.RoundRobin.TextInputLayout.FilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
        <item name="hintTextAppearance">@style/TextAppearance.Caption</item>
        <item name="android:paddingBottom">8dp</item>
        <item name="boxBackgroundColor">@color/colorWhite</item>
        <item name="android:colorControlHighlight">@color/colorSecondaryVariant</item> // this doesn't …
Run Code Online (Sandbox Code Playgroud)

android material-design android-textinputlayout material-components material-components-android

5
推荐指数
1
解决办法
1146
查看次数

TextInputLayout 轮廓提示颜色

我在 TextInputLayout 上有一个奇怪的错误。com.google.android.material.textfield.TextInputEditText焦点的提示颜色变为白色。

在此处输入图片说明

这就是我设置它的方式:

<com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/inputEmail"
                        style="@style/EditText.OutlinedBox"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="16dp"
                        android:layout_marginTop="10dp"
                        android:layout_marginEnd="16dp"
                        app:boxStrokeColor="@color/colorBrand">

                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/editTextEmail"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="start"
                            android:hint="@string/edt_hint_email"
                            android:inputType="textEmailAddress"
                            android:textAlignment="viewStart" />
                    </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

..这是风格:

 <style name="EditText.OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:minHeight">56dp</item>
        <item name="android:textSize">18sp</item>
        <item name="android:fontFamily">@font/dubai_regular</item>
        <item name="hintEnabled">true</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

编辑:添加 style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TextAppearance.AppCompat.Title" parent="TextAppearance.AppCompat.Large">
        <item name="android:textColor">@color/colorTextPrimary</item>
        <item name="android:layout_gravity">center_vertical</item>
    </style>


    <style name="EditText.OutlinedBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="android:minHeight">56dp</item>
        <item name="android:textSize">18sp</item>
        <item name="android:fontFamily">@font/dubai_regular</item>
        <item name="hintEnabled">true</item>
    </style>

    <style name="Button" parent="Widget.MaterialComponents.Button">
        <item name="cornerRadius">10dp</item>
        <item name="backgroundTint">@color/colorAccent</item>
        <item name="android:minHeight">56dp</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:fontFamily">@font/dubai_bold</item>
        <item name="android:elevation">0dp</item>
        <item …
Run Code Online (Sandbox Code Playgroud)

layout android kotlin android-textinputlayout android-textinputedittext

5
推荐指数
1
解决办法
5286
查看次数

如何正确从材料设计 TextInputLayout 获取文本?

我想使用自定义结束图标从材料设计的 TextInputLayout 获取文本。

我试图这样做:

TextInputLayout textInputCustomEndIcon = findViewById(R.id.editText);
final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());

textInputCustomEndIcon
                .setEndIconOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                if (editText.getText() != null) {
                                    String text = editText.getText().toString();

                                    Log.i("MainActivity", "setEndIconOnClickListener:"+ text);
                                }
                            }
                            });
Run Code Online (Sandbox Code Playgroud)

但我得到一个空文本,不是空而是空!!

android material-design android-textinputlayout android-textinputedittext

5
推荐指数
1
解决办法
1万
查看次数

TextInputLayout 以编程方式设置 startIconDrawable 的颜色

我想以TextInputLayout编程方式为我的启动图标设置开始图标,但我遇到了他的颜色问题。当我设置 drawable 时,它​​的颜色变成灰色,但它的原始颜色是橙色。我知道我可以通过startIconTint在 xml 中使用参数来改变它的颜色,但我想以编程方式改变它的颜色。有人可以帮我弄这个吗。

android material-design android-textinputlayout material-components material-components-android

5
推荐指数
1
解决办法
1615
查看次数

如何在 Jetpack Compose 上更改 TextField 突出显示的文本颜色?

在当前将我的应用程序转换为 Jetpack compose 时,我在某些情况下遇到了一些问题来调整我当前的调色板。

TextInputLayout我的 xml 文件中有一些从主题上的 SECUNDARY 颜色继承了高亮文本颜色。

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.NoActionBar">
    ...
    <item name="colorPrimary">@color/blue</item>
    <item name="colorPrimaryVariant">@color/blue</item>
    <item name="colorSecondary">@color/red</item>
    <item name="colorSecondaryVariant">@color/red</item>
    ...
</style>
Run Code Online (Sandbox Code Playgroud)

带有主题辅助颜色的 TextInputLayout - xml

问题是我的TextFieldon compose 继承了 PRIMARY 颜色的高亮文本颜色MaterialTheme

MaterialTheme(
    colors = Colors(
        primary = Color.Blue,
        ...
        secondary = Color.Red,
        ...
    ),
    content = content,
    typography = MaterialTheme.typography,
    shapes = MaterialTheme.shapes,
) {
   TextField(...)
}
Run Code Online (Sandbox Code Playgroud)

具有主题主色的 TextField - 撰写

我覆盖了colors参数,TextField但似乎没有影响这种颜色。

是否有一种方法可以在不更改colorson 的情况下覆盖 compose 上的突出显示颜色MaterialTheme?我想避免这种情况,因为它可能会在使用相同主题的其他屏幕上引起问题。

android android-textinputlayout android-jetpack-compose android-jetpack-compose-text

5
推荐指数
1
解决办法
108
查看次数