gpt4 book ai didi

android - 具有自定义 View 的小部件宿主应用程序 - 在应用程序小部件中不会触发 onClick

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:39 24 4
gpt4 key购买 nike

我正在编写一个将托管小部件的应用程序。该应用程序具有自定义 View (这可能是问题的根源)。我这样获取 AppWidgetHostView

private AppWidgetHostView widget;
...
AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
widget = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
widget.setAppWidget(appWidgetId, appWidgetInfo);
mView.addWidget(widget, appWidgetInfo);

mView.addWidget() 基本上只是记住这个 AppWidgetHostView 实例,然后 mView 将它直接绘制到 Canvas 上。视觉上一切都很好——我可以看到实际的小部件。但问题在于对 UI 事件使用react。请告知需要在父 View 中执行哪些操作才能正确触发小部件中的处理程序,例如 onClick()。

注意事项:

  1. 我使用的是通常对点击事件使用react的标准小部件。都没有用。

  2. 我还使用监听器创建了自己的测试小部件(通过 views.setOnClickPendingIntent(R.id.appwidget_text, pending);),如果小部件被添加到主屏幕上,则 onClick() 会成功触发,但不会在我的应用中工作。

  3. mView 正确检测到点击事件,我尝试在那里调用 widget.performClick(),它返回 false,表示 onClickListener 未在小部件中注册。但是根据消息来源 mAppWidgetHost.createView() 会调用 updateAppWidget 来注册它的 onClick 监听器..

请告知在哪里看。谢谢

最佳答案

如果您的小部件不属于属于系统的真实 ViewGroup,则需要对触摸事件执行 setLocation() 以将它们与小部件应在的位置对齐。如果不这样做,用于查找哪个 View 被触摸的 View 代码将无法工作,因为 X 和 Y 值将是错误的(它们应该是相对于父 View 的,而不是绝对的)。

关于android - 具有自定义 View 的小部件宿主应用程序 - 在应用程序小部件中不会触发 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com