Xamarin Forms - Android 按钮使用来自 Resources/Layout 的相对布局
Xamarin Forms - Android button using relative layour from Resources/Layout
Visual Studio 2017
所以我有一个应用程序 IOS & Android 使用 Xamarin Forms。
我已将 RelativeLayout 文件下载到 resources/Layouts.
有没有办法在自定义按钮渲染器中使用此布局?
我们所有的表单都在 Xamarin 项目中,所以我不能只将它包含在片段中。
我是否试图通过在客户渲染器中捏造使用它来鞭打一匹死马?
为您的自定义按钮创建视图渲染器。然后将其替换为您的原生布局:
[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace App.Droid
{
public class CustomButtonRenderer : ViewRenderer<CustomButton, Android.Views.View>
{
Context _context;
public CustomButtonRenderer(Context context) : base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<CustomButton> e)
{
base.OnElementChanged(e);
if (Control == null)
{
SetNativeControl(getView());
}
}
Android.Views.View getView()
{
return LayoutInflater.From(_context).Inflate(Resource.Layout.custom_layout, null);
}
}
}
最后,您可以在 XAML 中使用自定义控件,例如:
<StackLayout>
<local:CustomButton />
</StackLayout>
Visual Studio 2017 所以我有一个应用程序 IOS & Android 使用 Xamarin Forms。 我已将 RelativeLayout 文件下载到 resources/Layouts.
有没有办法在自定义按钮渲染器中使用此布局?
我们所有的表单都在 Xamarin 项目中,所以我不能只将它包含在片段中。
我是否试图通过在客户渲染器中捏造使用它来鞭打一匹死马?
为您的自定义按钮创建视图渲染器。然后将其替换为您的原生布局:
[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]
namespace App.Droid
{
public class CustomButtonRenderer : ViewRenderer<CustomButton, Android.Views.View>
{
Context _context;
public CustomButtonRenderer(Context context) : base(context)
{
_context = context;
}
protected override void OnElementChanged(ElementChangedEventArgs<CustomButton> e)
{
base.OnElementChanged(e);
if (Control == null)
{
SetNativeControl(getView());
}
}
Android.Views.View getView()
{
return LayoutInflater.From(_context).Inflate(Resource.Layout.custom_layout, null);
}
}
}
最后,您可以在 XAML 中使用自定义控件,例如:
<StackLayout>
<local:CustomButton />
</StackLayout>