Xamarin.Android更改单个EditText下划线颜色

问题描述 投票:3回答:4

我试图以编程方式更改单个EditText的全息下划线颜色。我已经尝试了所有可以在SO上找到的例子,但似乎没有任何效果。这是我最新和最好的尝试:

编辑:当前代码:

txtName.Background.ClearColorFilter();
txtName.Background.SetColorFilter(Android.Graphics.Color.ParseColor("#ff0000"), PorterDuff.Mode.SrcIn);

我也试过使用txtName.Background.SetTint(Resource.Color.colorRed),但这也不起作用。

这是我试图改变的线条颜色的图片:enter image description here

EditText XML:

<EditText
        android:id="@+id/input_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textCapWords"
        android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "
        android:maxLength="30"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:hint="Name"
        android:textColor="#8c8c8c"
        android:textColorHint="#8c8c8c"
        app:backgroundTint="#22d6d3"
        android:layout_marginBottom="10dp" />

编辑 - 这是最终工作的代码:

ViewCompat.SetBackgroundTintList(txtName, Android.Content.Res.ColorStateList.ValueOf(Color.Red));
android xamarin xamarin.android
4个回答
0
投票

仅在使用Appcompat库时才更新。

我建议你试一试

ViewCompat.SetBackgroundTintList(_YourView , ColorStateList.ValueOf(Color.ParseColor(#ff0000))));

在您的情况下,_YourView意味着您想要更改其颜色的EditText和值采用Android图形颜色,因此它易于使用

如果你要支持Android API-19或更低版本,另一个建议是使用appcompat EditText。


0
投票

正如这篇文章所述:EditText underline below text property

设置颜色:

editText.getBackground()。setColorFilter(color,PorterDuff.Mode.SRC_IN);

要删除颜色:

。editText.getBackground()clearColorFilter();

还有其他变化,如How to consistently set EditText Selected Underline Color Programatically我测试了setColorFilter,它适用于我的应用程序。


0
投票

感谢@ Large的回答,他的答案适用于使用java的原生Android。

在Xamarin.Android中,它与Native Android相同,请执行以下操作:

txtName.Background.SetColorFilter(Android.Graphics.Color.ParseColor("#ff0000"), PorterDuff.Mode.SrcIn);

或者使用android的颜色资源,如下所示:

txtName.Background.SetColorFilter(Color.Red, PorterDuff.Mode.SrcIn);

不要使用new Color(Resource.Color.colorRed),因为在Android中不推荐使用getResources().getColor(int id)方法。


0
投票

您可以创建自定义渲染器以格式化EditText的样式

 protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                Control.Background = new ColorDrawable(Android.Graphics.Color.Transparent);

            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.