c# - 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# 新手。如果查询不清楚,请随时询问。
解决方案
如果要实现按钮的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));
推荐阅读
- python - 根据多行分组条件更改熊猫列中的单元格值
- docker - 在 docker 中配置企业 Splunk,以便服务可以通过 HTTP 登录到 HTTP Event Collector
- bash - Bash cgi 脚本以 apache@ 用户身份发送电子邮件并忽略邮件命令参数
- python-3.x - 使用 pyvisa 从示波器保存波形数据时出现缓冲区错误
- flutter - 如何在颤振中将图像添加到 ArCore
- react-query - 订阅缓存更新在 react-query 中不起作用
- html - 堆叠时边框中的自定义渐变不起作用
- python - Python坐标旋转随着迭代而变小
- python - 将 Pandas DataFrame 转换为类似 Sankey 的结构
- beautifulsoup - 如何从 Scrapy 选择器中的多个标签中提取值?