Я пытаюсь создать nutiteq ViewLabel
с пользовательским представлением, содержащим три Button
s. Мой код и проблема очень похожа на этот пост nutiteq: Button resp. clickable Views not working in Custom ViewLabel.Nutiteq: ViewLabel: Задержка выполнения кнопки
С предоставленным ответом упомянутого сообщения я заметил, что вызывается метод вида onTouchEvent
и что объект, который выполняет щелчок, отправляется обработчиком в runQueue, который запускается хореографом.
После нажатия Button
в ViewLabel
те внутренние вызовы, которые я описал выше случиться, но onClick
-метод Button
не выполняется, пока не будет нажата где-то за пределами ViewLabel
. Затем закрывается ViewLabel
(как и при нажатии на карту позади него) и Toast
Я положил в onClick
-Method запускается.
Я думаю, что проблема имеет что-то делать 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));
}
Вы можете предоставить немного кода? Особенно, как вы строите 'ViewLabel'? –
@ValentinoRu MapActivity вызывает класс Map, который имеет этот метод 'public void createViewMarker (View markerView, значок Bitmap, MapPos pos, категория cat, String tag) { MarkerStyle markerStyle = MarkerStyle.builder(). SetBitmap (значок) .setSize (0.5f) .setColor ( Color.WHITE) .build(); Метка ViewLabel = новая ViewLabel (markerView, новый обработчик (Looper.getMainLooper())); label.setTouchHandlingMode (true); markers.add (новый MocaMarker (pos, label, markerStyle, cat, markerLayer, tag)); } ' – pekayde