Xamarin在Android上带有彩色边框的表单条目

时间:2018-09-18 14:32:15

标签: android xamarin.forms xamarin.android

我为我的应用程序创建了一个自定义呈现条目,此刻仅在文本中添加了填充。我还希望边框颜色始终为蓝色,即使用户将注意力放在条目上也是如此。 我现在在我的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之后,它对我的​​输入完全没有任何作用。

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

编辑:我需要将边框设置在条目的底部,并且厚约5像素。

3 个答案:

答案 0 :(得分:1)

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

或者您可以修改渲染器:

public HttpResponseMessage Foo([FromBody] FooBar request) { ... }

答案 1 :(得分:1)

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

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

FooLayout适用于任何布局

答案 2 :(得分: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"/>