我为我的应用程序创建了一个自定义呈现条目,此刻仅在文本中添加了填充。我还希望边框颜色始终为蓝色,即使用户将注意力放在条目上也是如此。 我现在在我的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像素。
答案 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"/>