Xamarin在Android上使用彩色边框表示条目

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

我已经为我的应用程序创建了一个自定义呈现条目,此时只需在文本中添加填充。即使用户专注于条目,我也希望边框颜色始终为蓝色。我在Android自定义条目中获取此代码(取自here,但它不起作用,它只是添加了一个蓝色背景):

protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            var view = (BlueBorderEntry)Element;
            GradientDrawable gd = new GradientDrawable();

            //Below line is useful to give border color
            gd.SetColor(global::Android.Graphics.Color.Rgb(45, 192, 232));


            this.Control.SetBackgroundDrawable(gd);
            this.Control.SetPadding(40, 40, 40, 40);


            this.Control.SetRawInputType(InputTypes.TextFlagNoSuggestions);
        }
    }

我已经探索了可能设置边框颜色的内容并找到了:

this.Control.SetCompoundDrawables();

其描述如下:

将drawable设置为显示在文本的左侧,上方,右侧和下方。

然而,在使用蓝色的Drawable传递之后,它对我的​​输入完全没有任何作用。

我似乎无法弄清楚如何让边框成为蓝色,如果有人可以帮助我吗?

编辑:我需要边框位于条目的底部,厚度约为5px。

android xamarin.forms xamarin.android
3个回答
1
投票

您可以在没有渲染器的情况下使用框架并将条目放在框架内,并设置框架的边框颜色。这是一种简单的方法。

或者您可以修改渲染器:

public class CustomEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); if (e.OldElement == null) { var nativeEditText = (global::Android.Widget.EditText)Control; var shape = new ShapeDrawable(new Android.Graphics.Drawables.Shapes.RectShape()); shape.Paint.Color = Xamarin.Forms.Color.Red.ToAndroid(); shape.Paint.SetStyle(Paint.Style.Stroke); nativeEditText.Background = shape; } } }


1
投票

通常,我不喜欢变通方法,但这太难以忽略了:

<FooLayout BackgroundColor="White">
  <StackLayout BackgroundColor="Black" Padding="1">
      <Entry BackgroundColor="White" />
  </StackLayout>
    ...
 </FooLayout>

FooLayout类似于任何布局


1
投票

我使用了一个解决方法,我在条目下方添加了一个BoxView,其宽度与Entry相同,HeightRequest为5

<customrenderers:BlueBorderEntry x:Name="username" Text="" Placeholder="Email" WidthRequest="150" Margin="35, 0, 35, 0"/>
<BoxView WidthRequest="150" HeightRequest="5" BackgroundColor="#8ad6ea" Margin="35, 0, 35, 20"/>
© www.soinside.com 2019 - 2024. All rights reserved.