gpt4 book ai didi

android - Nutiteq:ViewLabel:延迟按钮执行

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:53 26 4
gpt4 key购买 nike

我正在尝试使用包含三个 Button 的自定义 View 创建 nutiteq ViewLabel。我的代码和问题与这篇文章非常相似nutiteq: Button resp. clickable Views not working in Custom ViewLabel .

根据引用帖子的提供答案,我注意到调用了 View 的 onTouchEvent-Method,并且执行点击的对象由处理程序发布到 runQueue,该处理程序由编舞家。

ViewLabel 中按下一个 Button 之后,我上面描述的那些内部调用发生了,但是 onClick - 的方法>Button 直到我按下 ViewLabel 之外的某处才会执行。然后 ViewLabel 关闭(就像它应该的那样,当按下它后面的 map 时)和 Toast 我放在 onClick 中的方法被触发.

我认为问题与 UIThread 有关。似乎 performClick-Action 被放入了错误的 runQueue,当用户没有打开 Label 时它是活跃的。

如果有人有想法,如何解决该问题,那就太好了。

已编辑:这是我构建 ViewLabel 的方式。此方法位于由 MapActivity 调用的类中:

    public void createViewMarker(View markerView, Bitmap icon, MapPos pos, Category cat, String tag) {
MarkerStyle markerStyle = MarkerStyle.builder().setBitmap(icon).setSize(0.5f).setColor(
Color.WHITE).build();
ViewLabel label = new ViewLabel(markerView, new Handler(Looper.getMainLooper()));
label.setTouchHandlingMode(true);
markers.add(new MocaMarker(pos, label, markerStyle, cat,
markerLayer, tag));
}

最佳答案

在谷歌群组中的 nutiteq 团队回复后也没有解决方案( see here ) 我决定完全摆脱 ViewLabel。

我现在的解决方案是将准备好的 poi View 的布局包含到 MapActivity 布局文件中,并将其与我自定义的 MapListener 实现一起加载。我在 MapListener 的构造函数中对 poi View 元素进行了所有初始化,并在调用方法 onVectorElementClicked 时更改了可见性。这是它的基本外观 fragment :

 @Override
public void onMapClicked(double x, double y, boolean b) {
Toast.makeText(activity, "onMapClicked " + (new EPSG3857()).toWgs84(x, y).x + " " + (new EPSG3857()).toWgs84(x, y).y, Toast.LENGTH_SHORT).show();
Log.d(TAG, "onMapClicked " + x + " " + y);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
mPoiGlanceView.setVisibility(View.INVISIBLE);
}
});
}

@Override
public void onVectorElementClicked(VectorElement vectorElement, double v, double v2, boolean b) {
if (vectorElement != null && vectorElement instanceof Marker) {
showPopupView(vectorElement);
Toast.makeText(activity, "onLabelClicked Marker!", Toast.LENGTH_SHORT).show();
}
}

private void showPopupView(VectorElement vectorElement) {
mPoiGlanceView.setVisibility(View.VISIBLE);
setUpUiElementsForView();
}

我在 nutiteq 的 github 文档中受到 ViewLabel 替代方案的启发 see here “使用 Android 标准布局工具”

关于android - Nutiteq:ViewLabel:延迟按钮执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064524/

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