标签: android-textinputlayout

聚焦后更改 TextInputLayout 提示文本

在片段中,我想在用户触摸 TextInputEditText 后更改 TextInputLayout 提示文本。在它动画化到浮动提示之前。

我可以毫无问题地更改提示,但我希望用户先触摸它,然后再更改它。

我怎样才能做到这一点?

谢谢

android android-fragments android-textinputlayout

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

Android Talkback 在 TextInputLayout 上的错误公告

我的布局中有以下代码

\n\n
<com.google.android.material.textfield.TextInputLayout\n        android:id="@+id/tilPassword"\n        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"\n        android:layout_width="match_parent"\n        android:layout_height="wrap_content"\n        android:hint="Password"\n        app:layout_constraintEnd_toEndOf="parent"\n        app:layout_constraintStart_toStartOf="parent"\n        app:layout_constraintTop_toBottomOf="@id/tilUserName"\n        app:passwordToggleEnabled="true">\n\n        <com.google.android.material.textfield.TextInputEditText\n            android:id="@+id/tiePassword"\n            android:layout_width="match_parent"\n            android:layout_height="wrap_content"\n            android:imeOptions="actionDone"\n            android:inputType="textPassword"\n            android:selectAllOnFocus="true"\n            android:singleLine="true" />\n\n    </com.google.android.material.textfield.TextInputLayout>\n
Run Code Online (Sandbox Code Playgroud)\n\n

导航到 TextInputLayout 时 TalkBack 宣布:“密码密码编辑框”

\n\n

所需的公告:“密码编辑框”

\n\n

如果我删除其中一个,android:hint="Password"或者 android:inputType="textPassword"它会按预期工作。

\n\n

设置提示的注意事项

\n\n

提示应设置在 TextInputLayout 上,而不是 TextInputEditText 或 EditText 上。如果在 XML 中的子 EditText 上指定了提示,则 TextInputLayout 可能仍能正常工作;TextInputLayout 将使用 EditText\xe2\x80\x99s 提示作为其浮动标签。但是,以后调用修改提示将不会更新 TextInputLayout\xe2\x80\x99s 提示。为了避免意外行为,请在 TextInputLayout 上调用 setHint() 和 getHint(),而不是在 EditText 上调用。

\n

android talkback android-textinputlayout android-textinputedittext

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

如何在未聚焦时更改 TextInputEditText 浮动提示颜色

我正在尝试创建一个 TextInputEditText,其浮动提示颜色在不聚焦时不会改变。提示的颜色从白色变为蓝色,即更改为通过textColorHint字段设置的颜色。

在此输入图像描述

仅当 TextInputEditText 已填充且未聚焦时才会发生这种情况。我希望提示在 TextInputEditText 上方时为白色,在框内时为蓝色。当 TextInputEditText 不为空且未聚焦时,提示颜色将变为蓝色。

在此输入图像描述

文本输入编辑文本

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="4dp"
        android:textColorHint="@color/app_blue"
        app:hintTextAppearance="@style/TextAppearance.App.TextInputLayout"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/fNameET"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/text_input_layout_background"
            android:ellipsize="end"
            android:hint="First Name"
            android:lines="1"
            android:maxLines="1"
            android:paddingStart="16dp"
            android:paddingEnd="16dp" />
</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

TextAppearance.App.TextInputLayout

    <style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
        <item name="android:textColor">@android:color/white</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我想使用xml而不是java来完成上述任务。

android styling android-textinputlayout

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

如何禁用 TextInputLayout 密码切换按钮上的波纹效果

我使用 TextInputLayout 显示密码切换按钮。它正在工作,但涟漪效应位于 EditText 的背景后面(我使用 EditText 的可绘制背景)。如何禁用密码按钮的波纹效果或将波纹带到 EditText 背景前面?这里是演示问题的录制视频https://i.stack.imgur.com/g1TSE.jpg

\n\n
<com.google.android.material.textfield.TextInputLayout\n                android:layout_width="match_parent"\n                android:layout_height="wrap_content"\n                android:layout_marginTop="25dp"\n                app:hintEnabled="false"\n                app:passwordToggleEnabled="true">\n\n                <com.google.android.material.textfield.TextInputEditText\n                    android:layout_width="match_parent"\n                    android:layout_height="wrap_content"\n                    android:background="@drawable/bg_edit"\n                    android:hint="\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2\xe2\x80\xa2"\n                    android:inputType="textPassword"\n                    android:padding="18dp" />\n            </com.google.android.material.textfield.TextInputLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

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

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

TextInputLayout 下划线颜色在聚焦时不适应自定义颜色

不知道我错过了什么,但每次edittext聚焦时,下划线颜色都不会适应我设置的自定义颜色。这是我的主题代码供参考

<style name="EditTextHintWhite" parent="@style/AppTheme">
   <item name="color">@color/white</item>
   <item name="android:textColorHint">@color/white</item>
   <item name="colorControlNormal">@color/white</item>
   <item name="colorControlActivated">@color/white</item>
   <item name="colorError">@color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已将它们全部设置为白色,但不知何故,当焦点edittext聚焦时,下划线变成绿色

在此输入图像描述

这是我的布局代码

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/EditTextHintWhite">

        <androidx.appcompat.widget.AppCompatEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/email"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:shadowColor="@color/white"
            android:singleLine="true"
            android:textColor="@color/white"
            app:backgroundTint="@color/white" />

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

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

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

Android 中带标题的边框

我想在 Android 中创建一个组件。该组件应该是一个标题类似于 的边框,TextInputLayout并且可以在内部包含任何布局。

文本输入布局

我在这里找到了一个解决方案,但我想知道是否有人可以分享不同的解决方案。我认为那是很hacky的。

该布局包括两种线性布局,第一个是带有标题的顶部边框线,第二个是带有左、右、下边框的内容。

你怎么认为?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="20dp">
        <LinearLayout
            android:id="@+id/main"
            android:layout_width="match_parent"
            android:layout_height="20dp"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            android:weightSum="2">
            <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:layout_weight="1"
                android:background="#2ebadc"/>
            <TextView
                android:gravity="bottom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:text="Hello World" />
            <View
                android:layout_width="wrap_content"
                android:layout_height="2dp"
                android:layout_marginRight="5dp"
                android:background="#2ebadc"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginTop="10dp"
            android:padding="10dp"
            android:background="@drawable/topless_border">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="This is a border with title"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="The top inset of the border is set to -3 to …
Run Code Online (Sandbox Code Playgroud)

user-interface android kotlin material-design android-textinputlayout

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

从 Theme.AppCompat 切换到 Theme.MaterialComponents 显示白色空白标签和按钮

我正在使用材料设计1.1.0

对于带有Viewpager2. 我将其更新为'1.2.0-alpha05' 材质库版本,它对于单个模块工作正常,但对于我开发了自定义材质设计的TextInputLayout的另一个模块则崩溃了。我将主题从 更改为'Theme.AppCompat.Light.NoActionBar'Theme.MaterialComponents.Light.NoActionBar修复了崩溃。修复崩溃并升级主题后,它向我显示白色浮动标签、按钮、指示器等,有人请指导我哪里做错了。?

GITHUB 问题票链接: https://github.com/material-components/material-components-android/issues/1207

文本输入布局

Style.xml(旧文件)

@颜色/白色 @颜色/colorPrimary_New @颜色/a465661

旧文件在使用 AppCompact 时与材质发生冲突,parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"更新到 1.2.0-alpha05 后已解决,但样式背景现在不起作用

图书馆

materialVersion = '1.2.0-alpha05'

 "com.google.android.material:material:$materialVersion"
Run Code Online (Sandbox Code Playgroud)

.XML(设计)

  <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout"
        style="@style/contentInputLayoutStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_8dp"
        android:paddingStart="5dp"
        android:paddingLeft="5dp"
        app:helperTextEnabled="true"
        android:layout_marginLeft="@dimen/_8dp"
        android:layout_marginEnd="@dimen/_8dp"
        android:layout_marginRight="@dimen/_8dp"
        app:errorEnabled="false"
        app:layout_constraintBottom_toTopOf="@+id/errorTextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:hint="@string/EnterMobileNumber">


        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/textInputEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="phone"
            android:gravity="start"
            android:textDirection="anyRtl"
            tools:text="0335510023"
            android:background="@null"
            android:paddingEnd="@dimen/inputFieldPadding_36dp"
            android:paddingRight="@dimen/inputFieldPadding_36dp" />

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

样式.xml

 <style name="AppTheme"  parent="Theme.MaterialComponents.Light.NoActionBar" >
            <!-- Customize …
Run Code Online (Sandbox Code Playgroud)

android-layout material-design android-textinputlayout material-ui material-components-android

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

更改 Theme.MaterialComponents 的 TextInputLayout.OutlinedBox 的光标颜色

在我的应用程序中,我使用 textfield.TextInputLayout 和 textfield.TextInputEditText 作为输入文本,而不是通常的 EditText。这是我的观点:

 <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/inputId"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/fab_margin"
        android:layout_marginEnd="@dimen/fab_margin"
        android:focusedByDefault="false"
        android:enabled="true"
        android:hint="@string/userHint"
        android:textColor="@color/letter_medium_emphasis"
        app:boxCornerRadiusBottomEnd="@dimen/OutLinedBoxCorners"
        app:boxCornerRadiusBottomStart="@dimen/OutLinedBoxCorners"
        app:boxCornerRadiusTopEnd="@dimen/OutLinedBoxCorners"
        app:boxCornerRadiusTopStart="@dimen/OutLinedBoxCorners"
        app:boxStrokeColor="@color/letter_medium_emphasis"
        app:counterEnabled="true"
        app:counterMaxLength="20"
        app:helperText="@string/rememberId"
        app:helperTextEnabled="true"
        app:hintTextColor="@color/letter_medium_emphasis"
        app:startIconDrawable="@drawable/ic_account_circle_black_24dp"
        app:startIconTint="@color/primary_dark">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1"
            android:inputType="text"
            android:fontFamily="@font/poppins_medium" />

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

一切都是正确的,除了一件事,即光标和文本选择器的颜色。我附上一张图片来更好地解释自己。

在此输入图像描述

我一直在读,显然这已经发生在更多的人身上。光标在那里,但始终是白色的。

在此输入图像描述

我找到了解决方案,但它们都适用于 FilledBox.Dense 类型。我正在使用 OutlinedBox,但没有任何效果。我发现的最好的解决方案是这个

问题是,正如我所说,它适用于 FilledBox.Dense 类型,而不适用于 OutlinedBox。

有人可以告诉我如何适应这个解决方案或如何以其他方式改变颜色?

我尝试使用 OutlinedBox 类型对其进行调整,但没有成功。

提前致谢。

android colors android-textinputlayout material-components-android

5
推荐指数
2
解决办法
4225
查看次数

为什么 TextInputLayout 花费这么多时间来绘制?

我有一个使用 Material Design 制作的简单表单TextInputLayout。该表单由一个单独的 Fragment 显示,并以 ConstraintLayout 作为其根。当我从HomeFragment导航到FormFragment 时,布局需要半秒才能显示。

而且,当我使用导航组件时,工具栏首先更新,然后半秒后加载表单布局。

在运行Systrace时,我发现渲染该帧大约需要 267 毫秒。大部分时间都花在测量/布局阶段。

performance android android-textinputlayout

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

如何更改 TextInputLayout android 中 setEndIconDrawable 的可见性(可见、不可见或消失)?

在此输入图像描述

我试图使 endIconDrawable 不可见或不可见,它是上图中仅用于名字字段的编辑图标,并且希望保留其余字段的可见编辑图标,但无法做到这一点?我怎样才能做到这一点?

      <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/tilFirstName"
                android:layout_width="match_parent"
                android:layout_height="@dimen/_64dp"
                app:endIconDrawable="@drawable/icon_edit"
                app:endIconMode="custom">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etFirstName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:focusableInTouchMode="false"
                    android:hint="@string/label_fname"
                    android:inputType="textCapWords" />
            </com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

我想得到如下图所示的内容:

在此输入图像描述

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

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