如何让Android TextInputLayout的字符计数器显示在输入框边框内部
解决方案
要实现字符计数器显示在输入框边框内部的效果,可按以下步骤修改配置:
- 第一步:调整布局文件中的
TextInputLayout属性,替换原有样式并给输入框增加底部padding预留计数器位置,修正后的布局代码如下:
<com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@+id/tv_text_description_header" app:layout_constraintStart_toStartOf="parent" android:layout_marginHorizontal="16dp" android:layout_marginVertical="24dp" style="@style/CustomTextInputLayout" app:counterEnabled="true" app:counterMaxLength="500" app:boxBackgroundMode="outline" app:boxStrokeColor="@color/你的边框颜色" app:boxStrokeWidth="1dp" > <com.google.android.material.textfield.TextInputEditText android:id="@+id/et_incident_desc" android:layout_width="match_parent" android:layout_height="106dp" android:background="@null" android:paddingBottom="32dp" /> </com.google.android.material.textfield.TextInputLayout>
- 第二步:在
res/values/styles.xml中添加自定义样式,调整计数器的位置和显示效果:
<style name="CustomTextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <item name="counterTextAppearance">@style/CustomCounterText</item> <item name="boxPaddingBottom">8dp</item> </style> <style name="CustomCounterText" parent="TextAppearance.MaterialComponents.Caption"> <item name="android:layout_gravity">end|bottom</item> <item name="android:paddingEnd">16dp</item> <item name="android:paddingBottom">8dp</item> <item name="android:textColor">@color/你的计数器文字颜色</item> <item name="android:textSize">12sp</item> </style>
- 补充说明:你之前尝试嵌套View加边框的方式失效,是因为
TextInputLayout自带的OutlinedBox背景默认预留了底部外部空间放计数器,直接嵌套加边框会和自带背景冲突,修改自带样式属性即可实现需求,无需额外嵌套布局。
内容的提问来源于stack exchange,提问作者amar2108
相关产品推荐
相关产品推荐

