как я могу создать этот тип меню и вызвать действие Hover в android? - PullRequest
1 голос
/ 30 марта 2020

введите описание изображения здесь
Я хочу создать подобное меню. Кто-нибудь может мне помочь ???

Вот моя реализация java стороны. ivPricePopupMenu - это объект ImageView, а productlist_popup_menu - это макет, который я хочу отобразить в действии onMouseHover. Предложите несколько решений.

ivPricePopupMenu.setOnHoverListener(new View.OnHoverListener() {
            @Override
            public boolean onHover(View v, MotionEvent event) {
                Log.d("hover", "Bring yor cursor over the button");
                if(event.getAction()==MotionEvent.ACTION_HOVER_ENTER)
                {
                    //instantiate the popup.xml layout file
                    LayoutInflater layoutInflater = (LayoutInflater) ProductListActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    View customView = layoutInflater.inflate(R.layout.productlist_popup_menu,null);

                    //instantiate popup window
                   PopupWindow popupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

                    //display the popup window
                    popupWindow.showAtLocation(linearLayout, Gravity.CENTER,0, 0);
                }
                return false;
            }
        });

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Я получил решение !!! Создайте отдельный файл макета для popupWindow, а затем используйте событие onClickListner для вызова этого окна. создайте этот метод в событии onClick кнопки или изображения.

private void initiatePopupWindow () {// создайте экземпляр всплывающего окна. xml файл макета LayoutInflater layoutInflater = (LayoutInflater) ProductListActivity.this.getSystemService (Context.LAYOUT_INFLATER_SV) Просмотреть customView = layoutInflater.inflate (R.layout.productlist_popup_menu, null);

        //instantiate popup window
        final PopupWindow popupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

        popupWindow.setFocusable(true);
        popupWindow.setTouchable(true);
        popupWindow.setBackgroundDrawable(new ColorDrawable());
        popupWindow.setOutsideTouchable(true);

        //display the popup window
        popupWindow.showAtLocation(buttonTestingLayout, Gravity.CENTER, 0, 0);

    }
1 голос
/ 30 марта 2020

Вид меню при наведении курсора или всплывающую подсказку можно реализовать с помощью виджета PopupWindow.

PopupWindow(context)

Создать требуемый XML файл макета для Всплывающее окно. Раздвиньте макет, используя LayoutInflater, и установите для него необходимые данные.

Рассчитайте координаты x и y на основе местоположения привязки на экране (т. Е. Представления информационной кнопки на изображении из вопроса), чтобы Положение всплывающего окна.

Отображение всплывающего окна с использованием метода showAtLocation.

popUpWindow.showAtLocation(anchorView, gravity, x, y)

Гравитация может быть установлена ​​на Gravity.NO_GRAVITY путем вычисления координаты x и y правильно.

...