android - C#,Android:构建自己的事件监听器
问题描述
这就是问题所在。我正在使用来自其他人的自定义组件,称为“花式展示视图”。它着重于我活动中的按钮,并通过应用程序通过文本作为教程突出显示它们。我正在开始第一条消息,当用户通过单击活动中的任意位置来消除此消息时,应该突出显示下一个按钮。不幸的是,该组件,否则是完美的,没有像第一个教程视图的“OnDismis”那样实现的侦听器,因此下一个可以开始。只需将两者都放入代码中,然后另一个跳过第二个。它还尝试使用生命周期方法,例如 OnFocuseChanged(),但即使在教程被关闭后,此方法也不会再次调用。你们会说什么是处理这个问题的最佳方法?这是不起作用的:
try
{
new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
.Title(title1)
.TitleStyle(0, (int)GravityFlags.Center | (int)GravityFlags.Center)
.Build()
.Show();
}
catch (Exception e)
{
Toast.MakeText(this, "There was an error ... " + e, ToastLength.Short).Show();
}
try
{
new FancyShowCaseView.Builder(this) // if this crashes, we need clean rebuild
.Title("TEST")
//.TitleStyle(0, (int)GravityFlags.Center | (int)GravityFlags.Center)
.FocusOn(txtL)
.Build()
.Show();
}
catch (Exception e)
{
Toast.MakeText(this, "There was an error ... " + e, ToastLength.Short).Show();
}
第二个没有出现。没有事件处理程序,我无法使用生命周期方法。点击计数也不起作用,因为用户可能会在加载时点击活动,所以硬编码的值也不是一个好的选择。有任何想法吗?
谢谢:)
解决方案
使用FancyShowCaseQueue
来控制顺序。
您将单个FancyShowCaseView
s 添加到其中,并且当您“显示()”队列时,每个 FancyShowCaseView 都会按照您将它们添加到队列中的顺序发生。
例子:
var fancyView1 = new FancyShowCaseView.Builder(this)
.Title("StackOverflow 1")
.FocusOn(button1)
.Build();
var fancyView2 = new FancyShowCaseView.Builder(this)
.Title("StackOverflow 2")
.FocusOn(button1)
.Build();
var fancyQueue = new FancyShowCaseQueue()
.Add(fancyView1)
.Add(fancyView2);
fancyQueue.Show();
我使用的是 Xamarin.Android 绑定库FancyShowCaseView
,但您可以查看 repo 的示例应用程序中的基于 Java 的示例,即:AnimatedActivity.java
您还可以实现ME.Toptas.Fancyshowcase.IDismissListener
接口:
public void OnDismiss(string p0)
{
//
}
public void OnSkipped(string p0)
{
//
}
并在您的每个 FancyShowCaseViews 上使用该实现:
var fancyView2 = new FancyShowCaseView.Builder(this)
.Title("StackOverflow 2")
.FocusOn(button2)
.DismissListener(this)
.Build();
推荐阅读
- node.js - 为什么 displayStart (Datatable 1.10) 对我不起作用?
- javascript - 从内容脚本向后台发送消息
- django-postgresql - 我如何使用 django 和 postgresql 使用的自动注意力系统
- python - 在同一个类的另一个方法中调用一个类的方法的对象
- javascript - 如何创建从多个 URL 列表打开链接的按钮?
- css - Css 来创建这个表视图
- android - 如何同时(不在 UI 线程上)执行多个视频和图像的压缩(根据我的用例最多 10 个文件)?
- c# - Monogame“找不到 ContentTypeReader 类型”
- vue.js - 键值对的 Vue 插值
- python - 无法在 python 中使用 openpyxl 写入 excel