Я хочу отобразить простое меню со списком опций, когда долго нажимаю на определенные координаты холста.Читая некоторые сообщения, я понял, что мне нужно использовать PopupWindow , если я хочу отобразить это меню в событие (x, y) координаты.Теперь это мой код:
@Override
public void myLongPress(MotionEvent event) {
ListView popupView = new ListView(anotherObject.getContext());
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" };
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(anotherObject.getContext(), android.R.layout.simple_list_item_1, stringArray);
popupView.setAdapter(modeAdapter);
int width = 500;
int height = 100;
boolean focusable = true;
final PopupWindow popupWindow = new PopupWindow(popupView, width, height, focusable);
popupView.setBackgroundColor(Color.LTGRAY);
/*
popupView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
popupWindow.dismiss();
return true;
}
});
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
popupWindow.setElevation(20);
}
popupWindow.showAtLocation(anotherObject.getView() /*this is a random view*/, Gravity.NO_GRAVITY, (int)event.getX(), (int)event.getY());
}
Меню отображается в правильном месте, но список выходит за его пределы (500x100).Я увидел это, когда попытался прокрутить список:
Где ошибка?Можете ли вы предложить мне лучшее решение для отображения аналогичного меню в определенной точке (не связанной с видом)?