首页 > 解决方案 > Xamarin.android 中的 android Button 上的自定义 Button 类

问题描述

我想在 android 中创建自己的自定义 Button 类,它处理所有 android Button 操作,如创建、添加布局和单击。我实现了布局的创建和添加,但我不确定如何从我的包装类中添加点击事件。下面是我实现的代码片段。

public class MyButton
{
    private string vText = "MyButton";
    private Activity vActivityContainer;

    private Button vButton;

    public MyButton(Object pContainer)
    {
        vActivityContainer = (Activity)pContainer;
    }

    public void addButton(Object pViewGroup)
    {
        vButton = (Button)createButton();
        Android.Views.ViewGroup layout = (Android.Views.ViewGroup)pViewGroup;
        layout.AddView(vButton);
    }

    private Object createButton()
    {

        Button button = new Button(vActivityContainer);
        setButtonProperties(button);
        return button;
    }

    private void setButtonProperties(Object pButtonObj)
    {
        Button b = (Button)pButtonObj;
        b.Text = vText;
    }


    public void setText(String pText)
    {
        this.vText = pText;
    }
}

现在,当我创建 MyButton 类的实例时,我可以动态地为我的布局创建一个 android 按钮。下面是代码。

MyButton myb = new MyButton(Activity);
myb.setText("Tap Me");
myb.addButton(layout);

通过上面的方式,我为Android的按钮创建创建了一个包装类。现在我想为我通过包装类创建的所有按钮附加一个点击监听器。但我不确定如何实现这一目标。简而言之,实现如下所示。

myb.MyClick += (sender, e) => {
// Click operations
}

请指导我正确的做法,因为我是 C# 新手。如果查询不清楚,请随时询问。

标签: c#xamarinxamarin.android

解决方案


如果要实现按钮的IOnClickListener。有两种方法。

选项1

您可以直接在活动中实现接口

public class xxxActivity :Activity,View.IOnClickListener
myb.SetOnClickListener(this);

public void OnClick(View v)
        {
           //...
        }

选项 2

您可以定义一个类并实现接口

public class OnButtonClickListener : Java.Lang.Object, View.IOnClickListener
    {
        Button CurrentButton;
        public OnButtonClickListener(Button button)
        {
            CurrentButton = button;
        }

        public void OnClick(View v)
        {
           //...
        }
    }
myb.SetOnClickListener(new OnButtonClickListener(myb));

推荐阅读