在项目中包含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}}
答案 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
答案 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继承并设置自定义渲染器以进行继承控制。