这是问题所在。我正在使用其他人的自定义组件,称为“花式橱窗视图”。它着重于我活动中的按钮,并通过应用程序中的文本作为文本突出显示它们。我正在开始发送第一条消息,并且当用户通过单击活动中的任意位置来分散该消息时,应该突出显示下一个按钮。不幸的是,该组件本来是完美的,但没有像第一个教程视图的“ 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();
}
第二个没有出现。没有事件处理程序,我无法使用生命周期方法。点击计数也不起作用,因为用户可能会在加载活动时单击活动,因此硬编码值也不是一个好的选择。有任何想法吗?
谢谢:)
答案 0 :(得分:1)
使用FancyShowCaseQueue
控制顺序。
您向其中添加了单独的FancyShowCaseView
,并且当您“ Show()”队列时,每个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();
我正在使用FancyShowCaseView
的Xamarin.Android绑定库,但是您可以查看仓库中示例应用程序中基于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();