如何在Xamarin Android中为复选框添加自定义属性?
在我的XamarinAndroid应用程序中,我需要一些用于复选框控件的自定义属性。我们有默认属性,如“Id”、“Text”等如何在Xamarin Android中为复选框添加自定义属性?,xamarin,xamarin.android,Xamarin,Xamarin.android,在我的XamarinAndroid应用程序中,我需要一些用于复选框控件的自定义属性。我们有默认属性,如“Id”、“Text”等 是否可以通过编程方式将自定义属性添加到复选框?在Xamarin中做得很好。Android是小菜一碟: 首先,通过从复选框控件继承类来创建自定义复选框,如下所示: public class CustomCheckBox: CheckBox { Context mContext; public CustomCheckBox(Context context) : bas
是否可以通过编程方式将自定义属性添加到复选框?在Xamarin中做得很好。Android是小菜一碟:
- 首先,通过从复选框控件继承类来创建自定义复选框,如下所示:
public class CustomCheckBox: CheckBox { Context mContext; public CustomCheckBox(Context context) : base(context) { Init(context, null); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes) { Init(context, attrs); } private void Init(Context ctx, Android.Util.IAttributeSet attrs) { mContext = ctx; } }
public class CustomCheckBox : CheckBox , IPropertyCollection { ...... }
public interface IPropertyCollection { long FieldId { get; set; } string FieldName { get; set; } long PrimaryId { get; set; } }
- 然后,您可以通过两种不同的方式向其中添加自定义属性
- 首先,您可以创建一个接口并继承该接口(建议使用一个接口,因为它可以帮助您在某些其他自定义控件中需要相同的属性),例如:
public class CustomCheckBox: CheckBox { Context mContext; public CustomCheckBox(Context context) : base(context) { Init(context, null); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes) { Init(context, attrs); } private void Init(Context ctx, Android.Util.IAttributeSet attrs) { mContext = ctx; } }
public class CustomCheckBox : CheckBox , IPropertyCollection { ...... }
其中IPropertyCollection如下所示:public interface IPropertyCollection { long FieldId { get; set; } string FieldName { get; set; } long PrimaryId { get; set; } }
public class CustomCheckBox: CheckBox { Context mContext; public CustomCheckBox(Context context) : base(context) { Init(context, null); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr) : base(context, attrs, defStyleAttr) { Init(context, attrs); } public CustomCheckBox(Context context, Android.Util.IAttributeSet attrs, int defStyleAttr, int defStyleRes) : base(context, attrs, defStyleAttr, defStyleRes) { Init(context, attrs); } private void Init(Context ctx, Android.Util.IAttributeSet attrs) { mContext = ctx; } }
public class CustomCheckBox : CheckBox , IPropertyCollection { ...... }
public interface IPropertyCollection { long FieldId { get; set; } string FieldName { get; set; } long PrimaryId { get; set; } }
- 第二,您可以直接将属性添加到控件类中,控件类中也可以使用类似这样的属性
public class CustomCheckBox : CheckBox { ...... public string FieldName {get; set;} }
如果在Android上出现任何查询,您可以自定义属性并在
.axml
文件中自定义它们
1) 在values文件夹中添加attrs.xml
文件
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<declare-styleable name="custom">
<attr name="test" format="string" />
<attr name="number" format="integer" />
</declare-styleable>
</resources>
2) 在.axml
文件中自定义它:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<App39.MyCheckBox
android:id="@+id/checkbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
custom:test="111111111"
custom:number="200">
</App39.MyCheckBox>
</RelativeLayout>
,我为您提供一个演示