由于用户输入文本而隐藏提示时,包装EditText(或后代)以显示浮动标签的布局。
Android Material TextInputLayout 错误消息显示在 Material TextInputEditText 子项后面
我目前正在使用 Material 组件创建 Android UI。 在我的活动中,我使用 com.google.android.material.textfield.TextInputLayout 组件的错误功能。 问题是如果...
为什么TextInputLayout上的Drawable不清晰可见?
我正在尝试将麦克风按钮添加到文本字段,以便用户可以说话,并将其翻译为文本。 我的布局如下所示: 我正在尝试向文本字段添加一个麦克风按钮,以便用户可以说话,并将其翻译为文本。 我的布局如下所示: <com.google.android.material.textfield.TextInputLayout android:id="@+id/descriptionLayout" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/volunteering_description" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/projectLayout" app:endIconMode="custom" app:endIconDrawable="@drawable/ic_microphone" app:endIconContentDescription="Voice Input" android:layout_marginTop="@dimen/default_margin"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/etDescription" android:layout_width="match_parent" android:layout_height="wrap_content" android:minLines="2" /> </com.google.android.material.textfield.TextInputLayout> 单独查看时,该图标看起来很像黑白,但是当添加到TextInputLayout中时,它会变灰并且不清晰可见: 我已经尝试过app:boxBackgroundMode="none",但也没有帮助。 有人有如何解决的建议吗? 可以通过此链接找到原始图标。 我无法使用您的确切代码重现该问题,因此您创建的可绘制对象可能有问题。请尝试像这样创建您的绘图: 右键单击 Android Studio 中的 res 文件夹,然后选择 New -> Image Asset 然后,切换到顶部的“操作栏和选项卡图标”选项卡: [ 最后,选择keyboard voice作为剪贴画,然后单击“下一步”->“创建”: 覆盖任何当前文件。然后,输出应如下所示:
ConstraintLayout 中的layout_constraintHorizontal_weight = 1 不起作用
TextInputLayout 中的 TextInputEditText 使用 wight 属性与 ConstraintLayout 中的宽度相等。使用layout_constraintHorizontal_weight = 1不起作用。如何使用Textinputlayout的weight属性给予相同的宽度。 这是下面的结果。
从 AutoCompleteTextView 中删除下拉箭头
我想删除当我使用 TextInputLayout 并使用 Style: ExposedDropdownMenu 时由 AutoCompleteTextView 创建的下拉箭头 下面是我的代码: 我想删除当我使用AutoCompleteTextView并使用样式:TextInputLayout时由ExposedDropdownMenu创建的下拉箭头 下面是我的代码: <com.google.android.material.textfield.TextInputLayout android:layout_marginTop="10dp" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:hint="Marital Status" android:layout_width="match_parent" android:layout_height="match_parent" app:boxStrokeColor="@color/colorPrimaryDark"> <AutoCompleteTextView android:background="@null" android:focusable="false" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edt_marital" /> </com.google.android.material.textfield.TextInputLayout> 如果您想避免使用下拉图标,只需使用 app:endIconMode 属性。 <com.google.android.material.textfield.TextInputLayout style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" app:endIconMode="none" ...> 之前和之后: 大家好,经过一番搜索却发现很少。我正在努力实现我想要的,我想与你分享经验和结果。 正如相同的Material Design文档所述。 结果图像下拉菜单类似于微调器,遵循文档。下一个代码: <com.google.android.material.textfield.TextInputLayout android:id="@+id/txtAnswer" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_top_15dp" android:layout_marginEnd="10dp" app:endIconDrawable="@drawable/ic_arrow_down" app:hintTextAppearance="@style/styleFilterLabelLatoRegular" app:layout_constraintEnd_toStartOf="@+id/txtAssignedTo" app:layout_constraintStart_toStartOf="@+id/guideLineBegin" app:layout_constraintTop_toBottomOf="@+id/txtSearchQuestionnaire"> <AutoCompleteTextView android:id="@+id/actvTypesAnswer" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" android:hint="@string/text_answer" /> 现在是 AutoCompleteTextView Image AutoCompleteTextView 所期望的结果。代码 xml。 <com.google.android.material.textfield.TextInputLayout android:id="@+id/txtSearchQuestionnaire" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_top_15dp" app:endIconMode="none" app:hintTextAppearance="@style/styleFilterLabelLatoRegular" app:layout_constraintEnd_toEndOf="@id/guideLineEnd" app:layout_constraintStart_toStartOf="@+id/guideLineBegin" app:layout_constraintTop_toBottomOf="@+id/txtPeriodActivation"> <AutoCompleteTextView android:id="@+id/actvNameQuestionnaire" style="@style/textAppearanceSettingInputEdittextFilter.Enabled" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableEnd="@drawable/ic_search" android:hint="@string/text_search_name_questionnaire" /> </com.google.android.material.textfield.TextInputLayout> 唯一的更改是在 TextInputLayout 中添加属性 app: endIconMode = "none" 以及在 AutoCompleteTextView 中添加属性 android: drawableEnd="@drawable/ic_search" 请原谅我的英语水平!! 除了在layout.xml 中执行此操作之外,还可以通过编程方式执行此操作。因此,您需要周围 TextInputLayout 的实例,而不是 AutoCompleteTextView。 要删除下拉按钮,只需运行 textInputLayout.setEndIconMode(TextInputLayout.END_ICON_NONE); 要激活下拉按钮,只需运行 textInputLayout.setEndIconMode(TextInputLayout.END_ICON_DROPDOWN_MENU); 将 **app:endIconTint="@android:color/transparent"** 添加到 TextInputLayout 对我有用
如何在自定义TextInputLayout中的浮动提示和输入文本之间添加不同的填充?
我正在我的 Android 项目中开发自定义 TextInputLayout。我需要区分浮动提示(标签)和输入文本之间的填充。当提示浮动时(充当标签...
如果 EditText 是否获得焦点,我需要更改 TextInputLayout 中密码切换的颜色。我已经这样做了,但它不起作用。颜色始终等于浅灰色(来自状态 f...
我有一个 Android 屏幕,可以接收用户的电子邮件。下面是代码片段,我想删除文本下方出现的下划线。 我有一个 Android 屏幕,可以接收用户的电子邮件。下面是代码片段,我想删除文本下方出现的下划线。 <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:hint="@string/email" android:textColorHint="@color/blueBackground" app:boxBackgroundColor="@color/input_background" app:boxCornerRadiusBottomEnd="20dp" app:boxCornerRadiusBottomStart="20dp" app:boxCornerRadiusTopEnd="20dp" app:boxCornerRadiusTopStart="20dp" app:endIconMode="clear_text" app:endIconTint="@color/blueBackground" app:hintTextColor="@color/blueBackground"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/blueBackground" android:textSize="18sp" android:layout_margin="8dp" /> </com.google.android.material.textfield.TextInputLayout> 我已经尝试过android:background="@null"和 <item name="colorControlNormal">@android:color/transparent</item> <item name="colorControlActivated">@android:color/transparent</item> 但是它不起作用。 如果您想使用填充框,那么下面的代码非常适合我。 app:boxStrokeWidth="0dp" app:boxStrokeWidthFocused="0dp" 在输入布局中添加以上行。 app:boxBackgroundMode="none" 在父级 TextInputLayout 2022 更新 我的答案已被标记为所描述问题的解决方案,但看起来它已经过时了,并且有更好的方法。请参阅Gunavant Patel 的回答以获取最新修复。 原答案 看起来材质组件库使用 app:boxStrokeColor 绘制自己的下划线。该属性是一个 ColorStateList,因此您必须创建一个颜色状态列表资源,其中所有状态的颜色都设置为透明。所以基本上你想创建一个新文件res/color/filename.xml: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@android:color/transparent" android:state_pressed="true" android:state_focused="true" android:state_selected="true" android:state_checkable="true" android:state_checked="true" android:state_enabled="true" android:state_window_focused="true" /> </selector> 并将 app:boxStrokeColor 属性设置为 @color/filename。 但是,这给我留下了一条黑色下划线,它仍然无法响应 android:background=@null 或 <item name="colorControl*">@android:color/transparent</item>。 TL;博士 快速修复:如果使用 TextInputLayout 设置 style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" 轮廓,框看起来几乎相同,但下划线消失了。要删除笔划,只需将 app:boxStrokeColor 属性设置为 @null。 <style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="textInputStyle">@style/Widget.MyApp.TextInputLayout</item> </style> <style name="Widget.MyApp.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox"> <item name="boxStrokeWidth">0dp</item> <item name="boxStrokeWidthFocused">0dp</item> </style> 请在TextInputLayout中设置boxBackgroundMode。这是在 TextInputLayout 中删除下划线的简单而正确的方法 <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:boxBackgroundMode="none" > <com.google.android.material.textfield.TextInputEditText android:id="@+id/inputEditText" android:layout_width="match_parent" android:layout_height="wrap_content"/> </com.google.android.material.textfield.TextInputLayout> 将 TextInputLayout 的背景设置为可绘制并将 TextInputEditText 的背景设置为透明会删除下划线: <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:hint="@string/email" android:background="@drawable/blue_drawable" app:endIconMode="clear_text" app:endIconTint="@color/black" app:hintTextColor="@color/black"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/black" android:background="@android:color/transparent" android:textSize="18sp" android:layout_margin="8dp" /> </com.google.android.material.textfield.TextInputLayout> blue_drawable.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="20dp"/> <solid android:color="@android:color/holo_blue_bright"/></shape> 你只需要写 app:boxStrokeWidth="0dp" 和 app:boxStrokeWidthFocused="0dp" TextInputLayout 组件的属性。 应该这样写: <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" app:boxStrokeWidth="0dp" app:boxStrokeWidthFocused="0dp" android:hint="@string/email" android:textColorHint="@color/blueBackground" app:boxBackgroundColor="@color/input_background" app:boxCornerRadiusBottomEnd="20dp" app:boxCornerRadiusBottomStart="20dp" app:boxCornerRadiusTopEnd="20dp" app:boxCornerRadiusTopStart="20dp" app:endIconMode="clear_text" app:endIconTint="@color/blueBackground" app:hintTextColor="@color/blueBackground"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/blueBackground" android:textSize="18sp" android:layout_margin="8dp" /> </com.google.android.material.textfield.TextInputLayout> 如果你想要 app:boxBackgroundMode 填充且没有下划线,那么这将起作用 <item name="boxStrokeWidthFocused">0dp</item> <item name="boxStrokeWidth">0dp</item> 在TextInputLayout上添加这一行对我有用: app:boxStrokeWidth="0dp" 更新 在 color res 目录中添加 et_box_color.xml 文件并在其中添加以下行: <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="@color/transparent" android:state_pressed="true" android:state_focused="true" android:state_selected="true" android:state_checkable="true" android:state_checked="true" android:state_enabled="true" android:state_window_focused="true"/> </selector> 现在添加您的材质编辑文本,如下所示: <com.google.android.material.textfield.TextInputLayout android:id="@+id/textInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/border" app:boxStrokeColor="@color/et_box_color" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/llBank"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/etAmount" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="1dp" android:background="#00FFFFFF" android:gravity="center" android:hint="Amount" android:imeOptions="actionDone" android:inputType="numberDecimal" /> </com.google.android.material.textfield.TextInputLayout> 我添加了一个背景来制作 TextInputLayout 的边框,如果不需要,请删除 TextInputLayout 的背景。要使背景透明,需要 TextInputEditText 的背景。 解决方案很简单,你只需将这一行添加到 TextInputLayout : style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" 它将被修复。 简单的方法; app:boxBackgroundMode="filled" app:boxStrokeWidth="0dp" 在 res/drawable 创建一个选择器 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:alpha="0.01" android:color="?attr/background" android:state_focused="true"/> <item android:alpha="0.01" android:color="?attr/background" android:state_hovered="true"/> <item android:alpha="0.01" android:color="?attr/background" android:state_enabled="false"/> <item android:alpha="0.01" android:color="?attr/background"/> </selector> 背景在这里 - 任何接近您背景的颜色。 方式1 然后将其设置为您的TextInputLayout: <com.google.android.material.textfield.TextInputLayout ... app:boxStrokeColor="@drawable/text_input_selector" ... 方式2,槽式: styles.xml: <style name="vm_textFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox"> <item name="boxStrokeColor">@drawable/text_input_selector</item> </style> <com.google.android.material.textfield.TextInputLayout ... style="@style/vm_textFilledBox" 像这样制作你的自定义 TextInputLayout package com.google.android.material.textfield import android.content.Context import android.util.AttributeSet class TextInputLayoutWithoutUnderline @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : TextInputLayout(context, attrs, defStyleAttr) { override fun updateEditTextBackground() { // XXX don't call super on purpose } } 注意:这个答案是关于在输入时删除下划线的 TextInputEditText 在搜索了 6 个小时关于如何从 TextInputEditText 中删除下划线之后,我找到了一个单行解决方案,只需将 android:inputType="text|textNoSuggestions" 放入你的 TextInputEditText 中即可。 现在我在输入时没有任何下划线TextInputEditText android:backgroundTint="#FFFFFF" in TextInputEditText 尝试将背景设置为 @null 或 @android:color/transparent
如何在 Android Kotlin 中在没有 MaterialComponents 支持的情况下在 TextInputLayout 上显示边框
如何在没有 MaterialComponents 的 Android 中的 TextInputLayout 上显示边框。 我有一个 AppCompatActivity 使用 AppTheme.DialogTheme 将 Activity 显示为对话框,但此配置不
Android 中的 TextInputLayout 总是有一个默认背景
我有这样的 TextInputLayout 和 TextInputEditText 我有这样的TextInputLayout和TextInputEditText <com.google.android.material.textfield.TextInputLayout android:id="@+id/loginUsernameText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/text_input_margin_left_right" android:layout_marginRight="@dimen/text_input_margin_left_right" android:layout_marginTop="@dimen/text_input_margin_top_bottom" android:hint="@string/username" android:layout_below="@id/loginButtonLogin"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/loginUsername" android:layout_width="match_parent" android:padding="5dp" android:layout_height="wrap_content" android:inputType="textEmailAddress"/> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout android:id="@+id/loginPasswordText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/text_input_margin_left_right" android:layout_marginRight="@dimen/text_input_margin_left_right" android:layout_marginTop="@dimen/text_input_margin_top_bottom" android:hint="@string/password" android:layout_below="@id/loginUsernameText"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/loginPassword" android:layout_width="match_parent" android:padding="5dp" android:layout_height="wrap_content" android:inputType="textPassword"/> </com.google.android.material.textfield.TextInputLayout> 这是我的 styles.xml 文件 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> <style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/white</item> <item name="android:textSize">14sp</item> </style> </resources> 所以我没有在 TextInputLayout 上使用任何额外的东西,它们看起来像这样 这种灰色背景始终存在。 如何删除此背景并仅获取默认的 TextInputLayout。谢谢。 https://github.com/material-components/material-components-android/issues/102 这似乎是一个实质性的文本字段错误。 您可以使用此代码暂时更改背景白色。 <com.google.android.material.textfield.TextInputLayout app:boxBackgroundColor="@android:color/transparent" android:background="@android:color/transparent"> <com.google.android.material.textfield.TextInputEditText/> </com.google.android.material.textfield.TextInputLayout> 去除背景色的一种方法是调整TextInputLayout的背景模式。 应用程序:boxBackgroundMode =“无” 为我工作。 XML 代码示例: <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:boxBackgroundMode="none" app:errorEnabled="true" app:hintEnabled="false" app:layout_constraintTop_toTopOf="parent"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top" android:hint="@string/comment_placeholder" android:inputType="textCapSentences|textMultiLine" android:maxLength="500" /> </com.google.android.material.textfield.TextInputLayout> 方法A (完全透明背景) <com.google.android.material.textfield.TextInputLayout app:boxBackgroundMode="filled" app:boxBackgroundColor="@null" ..> <com.google.android.material.textfield.TextInputEditText android:backgroundTint="@android:color/transparent" ..> 方法B (纯色背景) <com.google.android.material.textfield.TextInputLayout app:boxBackgroundMode="filled" app:boxBackgroundColor="?android:attr/colorBackground" ..> *对于我的情况,我需要它完全透明,因为屏幕背景不是纯色。如果您是这种情况,请使用方法A 对我来说它与app:boxBackgroundColor="@null"一起工作,就像这样: <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:boxBackgroundColor="@null" android:hint="@string/description"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/description" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textMultiLine|textCapSentences" /> </com.google.android.material.textfield.TextInputLayout> 在我的情况下需要更改 TextInputLayout 和 TextInputEditText 中的背景 <com.google.android.material.textfield.TextInputLayout app:boxBackgroundColor="@color/transparent" android:background="@color/transparent" > <com.google.android.material.textfield.TextInputEditText android:background="@color/transparent" /> </com.google.android.material.textfield.TextInputLayout> 简单的方法对我有用! app:boxBackgroundMode="filled" app:boxBackgroundColor="@color/white" 我最近遇到了这个问题。上述解决方案均不适用于最新的材质主题版本。我花了一段时间才弄清楚。这是我的解决方案: 风格: <style name="Widget.App.TextInputLayout" parent="Widget.Design.TextInputLayout"> <item name="materialThemeOverlay">@style/ThemeOverlay.App.TextInputLayout</item> <item name="hintTextColor">@color/pink</item> <item name="android:textColorHint">@color/grey</item> </style> <style name="ThemeOverlay.App.TextInputLayout" parent=""> <item name="colorControlNormal">@color/grey</item> </style> 用途: <com.google.android.material.textfield.TextInputLayout android:id="@+id/password" style="@style/Widget.App.TextInputLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/password" app:layout_constraintBottom_toTopOf="@+id/agreement" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/email"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword"/> </com.google.android.material.textfield.TextInputLayout> 我还强烈建议您查看这篇文章。 迁移至 Android 的材质组件 默认背景颜色基于 colorOnSurface 属性。 您可以使用以下方法覆盖此值: <com.google.android.material.textfield.TextInputLayout android:theme="@style/MyTextInputLayout_overlay" ..> 与: <style name="MyTextInputLayout_overlay"> <item name="colorOnSurface">@color/....</item> </style> 或者您可以使用 boxBackgroundColor 属性(在布局或自定义样式中): <com.google.android.material.textfield.TextInputLayout app:boxBackgroundColor="@color/....." ..> 一开始一切都很顺利。后来布局就被打破了。原因是我更改了属性背景TextInputEditText。透明度必须在 TextInputEditText 上设置,而不是在 TextInputLayout 中设置 android:background="#80FFFFFF" 您可以使用这些选项来自定义 TextInputLayout。 <com.google.android.material.textfield.TextInputLayout android:id="@+id/menuMakeList" style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:background="@drawable/background_round_menu_selector" app:boxBackgroundColor="@android:color/transparent" app:boxBackgroundMode="outline" app:boxStrokeColor="@android:color/transparent" app:boxStrokeWidth="0dp" app:endIconDrawable="@drawable/ic_arrow_down" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textViewHeader"> <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="null" android:hint="Make" android:inputType="none" android:padding="16dp" app:hintTextColor="#C8CCC9" /> </com.google.android.material.textfield.TextInputLayout> 事情就是这样。我已使用自定义圆角 xml 作为背景并覆盖材质 background_round_menu_selector.xml. 中的颜色 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/white" /> <corners android:radius="15dp" /> <stroke android:width="2dp" android:color="#EAEAEA" /> </shape> 有一种解决方法是在 com.google.android.material.textfield.TextInputEditText 中添加属性 android:paddingStart="48dp"。您也可以根据需要更改该值。 这是我的activity_main.xml ?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/mainbackground" android:orientation="vertical" tools:context=".SignUp"> <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:startIconDrawable="@drawable/name" android:paddingStart="48dp" > <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="48dp" android:hint="Name" /> </com.google.android.material.textfield.TextInputLayout> </LinearLayout>
如何去除Androidx Compose Material中TextField的指示线?
我想删除 TextField 的紫色线/指示器(参见下图)。 这是可能的还是我应该创建自己的自定义 TextField 来实现这一目标?
如何更改 Jetpack Compose 上 TextField 的突出显示文本颜色?
当前将我的应用程序转换为 Jetpack compose,在某些情况下我面临着一些调整当前调色板的问题。 我的 xml 文件上有一些 TextInputLayout 继承了 highl...
所以,我使用 TextInputLayout 和 EditText 来输入电子邮件,但我在提示放置方面遇到了一些问题。我也不知道如何改变这个“I”符号的颜色。这是我的 XML ...
总的来说,Jetpack Compose 中的大多数组件似乎都很容易定制。 但是,对于 TextField 却不能这样说。例如,假设我想做这样的事情: 一个
如何更改 TextInputLayout android 中 setEndIconDrawable 的可见性(可见、不可见或消失)?
我正在尝试使 endIconDrawable 不可见或不可见,它是上图中仅用于 FirstName 字段的编辑图标,并且希望保留其余字段的可见编辑图标,但你...
如何使用 Kotlin 在 Android XML 中通过一次切换来切换两个密码字段的可见性?
我有两个密码字段,一个是密码,另一个是确认密码。我想在密码字段 EditText 中仅使用一个切换,使用 TextInputLayout 的属性 passwordToggleEnabled="true&qu...
以编程方式更改 TextInputLayout 聚焦和非聚焦提示颜色
我想在 TEXT INPUT LAYOUT 处于聚焦或未聚焦状态时更改相同的提示颜色。我有两个 TEXT INPUT LAYOUT 字段。两个字段的颜色相同。但它处于聚焦状态颜色
如何在 Jetpack Compose 中使用可搜索下拉菜单保持键盘焦点?
我正在尝试在 Jetpack Compose 中实现可搜索的下拉菜单,但每当下拉菜单出现时,键盘就会失去焦点并消失。如何修改代码来防止键盘...
TextInputLayout 似乎总是在顶部有一些额外的填充(无论所有边距/填充都设置为 0): 布局如下: TextInputLayout 似乎总是在顶部有一些额外的填充(无论所有边距/填充都设置为 0): 布局如下: <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:id="@+id/txt_amount" style="@style/EditTextStyle" android:hint="@string/hint_amount" android:inputType="numberDecimal"/> </android.support.design.widget.TextInputLayout> 如何删除这个多余的空间? 您可以通过将 app:hintEnabled="false" 设置为 TextInputLayout 来删除 AppCompatEditText 上方的额外空间,但在您重新启用之前它不会显示提示。 有关更多信息,请访问 Android 开发者网站 -TextInputLayout 查看以下代码 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:hintEnabled="false"> <android.support.v7.widget.AppCompatEditText android:id="@+id/txt_amount" style="@style/EditTextStyle" android:hint="@string/hint_amount" android:inputType="numberDecimal"/> </android.support.design.widget.TextInputLayout> 希望这有帮助.. @拉杰什 接受的答案在版本上对我不起作用 - 1.2.1所以我做了一些实验并意识到填充实际上并不是来自TextInputLayout,而是来自TextInputEditText。所以首先我从中删除了填充,但它看起来不均匀,所以我将自定义填充设置为 TextInputEditText 并且效果很好。只需将此行 android:padding="16dp" 添加到 TextInputEditText 将 16dp 替换为您想要的值即可。 具有这样的结构: <com.google.android.material.textfield.TextInputLayout android:id="@+id/til_project" style="@style/LoginTextInputLayoutStyle" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" app:errorEnabled="false"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/totalPiecesProduct" android:layout_gravity="center" android:gravity="center" android:padding="0dp" android:textSize="13sp" style="@style/TextInputEditTextStyle"/> </com.google.android.material.textfield.TextInputLayout> 按键是: app:errorEnabled="false" 在 TextInputLayout `android:padding="0dp"` in `TextInputEditText` 之前: 之后 要删除 TextInputLayout 中的所有填充,您可以在 TextInputLayout 中将 app:boxCollapsedPaddingTop 设置为 0dp,在 Edittext 中将 android:padding 设置为 0dp。 您可以通过覆盖TextInputStyle的默认填充样式来实现,(Material版本应高于1.1.0) <style name="CustomInputLayoutPadding" parent="Widget.MaterialComponents.TextInputLayout.FilledBox"> <item name="boxBackgroundColor">@color/transparent</item> <item name="materialThemeOverlay">@style/CustomOverlayFilledPadding</item> </style> 然后 <style name="CustomeOverlayFilledPadding"> <item name="editTextStyle">@style/CustomTextInputEditPaddingStyle</item> </style> 然后 <style name="CustomTextInputEditPaddingStyle" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox"> <item name="android:paddingStart" ns2:ignore="NewApi">2dp</item> <item name="android:paddingEnd" ns2:ignore="NewApi">2dp</item> <item name="android:paddingLeft">0dp</item> <item name="android:paddingRight">2dp</item> <item name="android:paddingTop">28dp</item> <item name="android:paddingBottom">12dp</item> </style> 我已经在 TextInputEditText 中使用设置手动填充 android:paddingHorizontal="@dimen/_12sdp" android:paddingVertical="@dimen/_10sdp" 从 compileSdk 33 或材质库版本 v1.8.0 开始,我添加了属性 app:boxBackgroundMode="filled" 在<com.google.android.material.textfield.TextInputLayout 将 hintEnabled = false 添加到布局 XML 中的 TextInputLayout。 你可以用这个 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:textColorHint="@android:color/white"> <com.bugle.customviews.RobotoLightEditText android:id="@+id/edtName" style="@style/StyledTilEditText" android:hint="@string/name" android:imeOptions="actionNext" android:inputType="textCapWords" /> </android.support.design.widget.TextInputLayout> 在 EditText 中添加这一行 android:translationY="-10dp"
相当于 Jetpack Compose TextField 中的“expandedHintEnabled”
当 OutlinedTextField 未处于焦点时,有什么方法可以将 OutlinedTextField 的标签放在顶部(展开)并且仍然具有占位符? 在 xml 布局中,我们有 TextInputLayout ,它有
我的应用程序中公开了以下 Android Material 组件的下拉菜单: 我的应用程序中公开了以下 Android Material 组件的下拉菜单: <com.google.android.material.textfield.TextInputLayout android:id="@+id/drop_down_menu" style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginEnd="8dp" android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar" app:boxBackgroundColor="@android:color/white" app:layout_constraintBottom_toBottomOf="@+id/number_text_view" app:layout_constraintEnd_toStartOf="@+id/add_button" app:layout_constraintTop_toTopOf="@+id/number_text_view"> <com.google.android.material.textfield.MaterialAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" android:paddingStart="8dp" android:paddingEnd="8dp" /> </com.google.android.material.textfield.TextInputLayout> 当用户触摸下拉菜单并出现菜单选项时,如何隐藏片段中的软键盘?当用户单击 EditText 组件并且在触摸下拉菜单关闭键盘之前未触摸屏幕的其他部分时,键盘会显示。 您可以将focusChangeListener注册到MaterialAutoCompleteTextView并在获得焦点时隐藏键盘。 autoCompleteTextView.setOnFocusChangeListener { v, hasFocus -> if (hasFocus) { hideSoftKeyboard() // Using activity extension function // v.hideKeyboard() // Using view extension function } } 这是隐藏键盘的 Activity 扩展功能: fun Activity.hideSoftKeyboard() { val inputMethodManager = this.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager val currentFocus = this.currentFocus val windowToken = this.window?.decorView?.rootView?.windowToken inputMethodManager.hideSoftInputFromWindow(windowToken, 0) inputMethodManager.hideSoftInputFromWindow( windowToken, InputMethodManager.HIDE_NOT_ALWAYS ) if (currentFocus != null) { inputMethodManager.hideSoftInputFromWindow(currentFocus.windowToken, 0) } } 或者您可以在 View 本身上使用以下内容。 来源 fun View.hideKeyboard(): Boolean { try { val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager return inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } catch (ignored: RuntimeException) { } return false } } bindingSheet.dropDownFloorList.setOnFocusChangeListener { v, hasFocus -> if (hasFocus) { hideSoftKeyboard() // Using activity extension function // v.hideKeyboard() // Using view extension function } }