在片段中,我想在用户触摸 TextInputEditText 后更改 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>\nRun Code Online (Sandbox Code Playgroud)\n\n导航到 TextInputLayout 时 TalkBack 宣布:“密码密码编辑框”
\n\n所需的公告:“密码编辑框”
\n\n如果我删除其中一个,android:hint="Password"或者 android:inputType="textPassword"它会按预期工作。
设置提示的注意事项
\n\n提示应设置在 TextInputLayout 上,而不是 TextInputEditText 或 EditText 上。如果在 XML 中的子 EditText 上指定了提示,则 TextInputLayout 可能仍能正常工作;TextInputLayout 将使用 EditText\xe2\x80\x99s 提示作为其浮动标签。但是,以后调用修改提示将不会更新 TextInputLayout\xe2\x80\x99s 提示。为了避免意外行为,请在 TextInputLayout 上调用 setHint() 和 getHint(),而不是在 EditText 上调用。
\nandroid talkback android-textinputlayout android-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来完成上述任务。
我使用 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>\nRun Code Online (Sandbox Code Playgroud)\n xml android material-design android-textinputlayout material-components-android
不知道我错过了什么,但每次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
我想在 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
我正在使用材料设计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
@颜色/白色 @颜色/colorPrimary_New @颜色/a465661Style.xml(旧文件)
旧文件在使用 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
在我的应用程序中,我使用 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
我有一个使用 Material Design 制作的简单表单TextInputLayout。该表单由一个单独的 Fragment 显示,并以 ConstraintLayout 作为其根。当我从HomeFragment导航到FormFragment 时,布局需要半秒才能显示。
而且,当我使用导航组件时,工具栏首先更新,然后半秒后加载表单布局。
在运行Systrace时,我发现渲染该帧大约需要 267 毫秒。大部分时间都花在测量/布局阶段。
我试图使 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
android ×9
material-components-android ×5
colors ×1
kotlin ×1
material-ui ×1
performance ×1
styling ×1
talkback ×1
xml ×1