You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android动态创建EditText设置背景后下划线消失问题求助

解决EditText设置背景后丢失下划线的问题

方法一:组合自定义背景与默认下划线Drawable

EditText默认的下划线是其背景Drawable的一部分,直接调用setBackground()会完全替换原有背景,导致下划线消失。可以通过LayerDrawable将自定义背景和默认下划线层叠,同时显示两者:

// 获取EditText默认背景(包含下划线)
Drawable originalBg = etTitle.getBackground();
// 获取自定义背景
TypedArray a = fragment.requireActivity().getTheme().obtainStyledAttributes(isDarkMode ? R.style.notepad_dark : R.style.notepad_light, new int[] {R.attr.myColorBottomNavigationViewBg});
int attributeResourceId = a.getResourceId(0, 0);
Drawable customBg = ContextCompat.getDrawable(fragment.requireContext(), attributeResourceId);
a.recycle(); // 务必回收TypedArray避免内存泄漏

// 组合Drawable:自定义背景在下,默认背景(带下划线)在上
Drawable[] layers = {customBg, originalBg};
LayerDrawable combinedBg = new LayerDrawable(layers);

// 设置组合后的背景
etTitle.setBackground(combinedBg);

方法二:通过自定义Style统一配置

如果想通过Style批量控制,可在styles.xml中定义包含背景和下划线的样式,再用ContextThemeWrapper创建EditText:

  1. 在styles.xml中添加样式:
<style name="EditTextWithBg" parent="Widget.AppCompat.EditText">
    <!-- 设置自定义背景Drawable或颜色 -->
    <item name="android:background">@drawable/your_custom_bg</item>
    <!-- 控制下划线颜色,保留默认下划线样式 -->
    <item name="colorControlNormal">@color/underline_default</item>
    <item name="colorControlActivated">@color/underline_focused</item>
</style>
  1. 动态创建EditText时应用样式:
etTitle = new EditText(new ContextThemeWrapper(fragment.requireContext(), R.style.EditTextWithBg));

若自定义背景是纯色,直接在style中用android:background指定颜色即可,AppCompat会自动保留下划线。

方法三:纯色背景用backgroundTint简化处理

如果你的自定义背景是纯色,无需替换整个背景,直接用setBackgroundTintList()修改背景色,同时保留下划线:

TypedArray a = fragment.requireActivity().getTheme().obtainStyledAttributes(isDarkMode ? R.style.notepad_dark : R.style.notepad_light, new int[] {R.attr.myColorBottomNavigationViewBg});
int bgColor = ContextCompat.getColor(fragment.requireContext(), a.getResourceId(0, 0));
a.recycle();

etTitle.setBackgroundTintList(ColorStateList.valueOf(bgColor));

此方法仅适用于纯色背景场景,带形状的背景建议用前两种方法。

内容的提问来源于stack exchange,提问作者user21172734

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:35:56