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

如何在Xamarin Android中设置EditText的下划线颜色?附现有代码

嘿,我来帮你搞定Xamarin Android里EditText下划线颜色的设置问题!结合你现有的代码,我给你几个实用的方案:

方法一:自定义Drawable背景(最适配你当前代码的方式)

你现在已经用了SetBackgroundResource来设置EditText的背景,那直接修改对应的Drawable资源就能实现自定义下划线颜色。

  1. 首先在你的Resource/Drawable文件夹下创建一个新的XML文件,比如命名为underline_custom.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 定义下划线的形状和颜色 -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" /> <!-- 让背景透明,只显示下划线 -->
            <stroke
                android:width="2dp" <!-- 下划线的粗细,可按需调整 -->
                android:color="#FF5722" /> <!-- 这里替换成你想要的下划线颜色 -->
        </shape>
    </item>
    <!-- 隐藏顶部、左右的线条,只保留底部下划线 -->
    <item android:top="-2dp" android:left="-2dp" android:right="-2dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>
  1. 然后把你代码里的SetBackgroundResource替换成这个新的资源:
_editText.SetBackgroundResource(Resource.Drawable.underline_custom);

这样就能完美替换掉原来的背景,只显示你指定颜色的下划线啦。

方法二:通过主题样式设置(支持状态切换)

如果你想让下划线在默认状态和获取焦点时显示不同颜色,或者统一管理多个EditText的样式,可以用主题样式来实现:

  1. 在Resource/values/styles.xml里添加一个自定义样式:
<style name="CustomEditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="colorControlNormal">#9E9E9E</item> <!-- 默认未获取焦点时的下划线颜色 -->
    <item name="colorControlActivated">#2196F3</item> <!-- 获取焦点时的下划线颜色 -->
</style>
  1. 给你的EditText应用这个样式:
// 代码中设置样式
_editText.SetStyle(Resource.Style.CustomEditTextStyle);

这个方法更符合Material Design的交互逻辑,用户体验会更好。

方法三:纯代码动态修改(无需XML)

如果不想创建XML资源,也可以直接在代码里动态修改背景的下划线颜色:

// 先获取EditText的背景Drawable
var backgroundDrawable = _editText.Background as GradientDrawable;
if (backgroundDrawable != null)
{
    // 设置下划线的粗细和颜色
    backgroundDrawable.SetStroke(2, Color.ParseColor("#FFC107"));
    _editText.Background = backgroundDrawable;
}

注意:这个方法需要确保当前EditText的背景是GradientDrawable类型,如果之前设置的是layer-list类型的背景,可能需要先解析对应的图层再修改。

另外,你现有代码里的SetTextColor、SetHintTextColor等设置可以保留,不会和下划线颜色的设置冲突哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:41