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

时间:2018-03-05 19:29:03

标签: android xamarin xamarin.android

我正在尝试以编程方式更改单个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));

4 个答案:

答案 0 :(得分:0)

如本帖所述:EditText underline below text property

  

设置颜色:

     

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

     

删除颜色:

     

editText.getBackground()clearColorFilter();

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

答案 1 :(得分: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)方法。

答案 2 :(得分:0)

<强>更新 仅在使用Appcompat库时才有效。

我建议你试一试

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

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

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

答案 3 :(得分:0)

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

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

            }
        }