Xamarin Border Radius AppCompat

时间:2016-05-09 22:25:04

标签: xamarin xamarin.forms android-appcompat

在项目中包含AppCompat时,似乎BorderRadius属性不起作用。

我尝试创建一个像Alternative to execfile in Python 3?这样的自定义渲染,但它不起作用:

[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace CalculateurMadelin.Droid.Renderers
{
        public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer
    { }
}

在Android项目中:

{{1}}

2 个答案:

答案 0 :(得分:7)

您可以在自定义渲染器中加载Android drawable,以定义AppCompat.Button上的背景:

[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace AppCompatRender.Droid
{
    public class CustomButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);
            if (e.OldElement == null)
            {
                Control.SetBackgroundResource(Resource.Drawable.CustomButtonBackground);
            }
        }
    }
}

添加与您在Resources/Drawable中使用的名称相匹配的新SetBackgroundResource(即CustomButtonBackground.axml),在此我将矩形的圆角半径设置为{{1 }}:

10dp

enter image description here

答案 1 :(得分:0)

这是真的,Button的自定义渲染器(以及Picker,Switch,Frame等)不会被AppCompat调用。

与调查联系: https://forums.xamarin.com/discussion/comment/180130/#Comment_180130

描述解决方案的链接: http://www.isosoft.org/taoffi/post/2016/03/26/Xamarin-forms-so-you-lost-your-rounded-buttons (更正的链接错误) 更简洁的方法是从Button继承并设置自定义渲染器以进行继承控制。