it-swarm.com.ru

Как изменить положение всплывающего меню на кнопке переполнения Android?

Мне просто нравится реализовывать то же самое, что и всплывающее меню в приложении Gmail, привязанное к кнопке переполнения в правом верхнем углу. для этого я использовал тот же код, что и в руководстве Google для Android всплывающее меню Android , но для меня показывать всплывающее меню в верхней части панели действий не под этим. Если вы заметили в всплывающем меню переполнения Gmail, вы увидели, что всплывающее меню происходит на краю панели действий.

Это XML, который я использовал для всплывающего меню:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >

    <item
        Android:id="@+id/item1"
        Android:title="lablab"/>
    <item
        Android:id="@+id/item2"
        Android:title="lablab"/>

</menu>

и в последующем в моей деятельности:

public void showFontSetting(View view) {
    PopupMenu popup = new PopupMenu(this, view);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.menu, popup.getMenu());
    popup.show();

    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
        // TODO Auto-generated method stub

            switch (item.getItemId()) {
                case R.id.item1:
                    Toast.makeText(Index.this,
                        "You Clicked : " + item.getTitle(),
                    Toast.LENGTH_SHORT).show();
                    break;
                case R.id.item2:
                    break;
            }
            return true;
        }
    });
}
6
user3266062

Добавьте следующий фрагмент кода в вашу деятельность:

PopupWindow popupwindow_obj; // create object

popupwindow_obj=popupDisplay();  // initialize in onCreate()

popupwindow_obj.showAsDropDown(clickbtn,-40, 18); // where u want show on view click event

public PopupWindow popupDisplay() { // disply designing your popoup window
    final PopupWindow popupWindow = new PopupWindow(this); // inflet your layout or diynamic add view

    View view; 

    LayoutInflater inflater = (LayoutInflater)   getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    view = inflater.inflate(R.layout.mylayout, null);

    Button item = (LinearLayout) view.findViewById(R.id.button1);

    popupWindow.setFocusable(true);
    popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setContentView(view);

    return popupWindow;
}

Создайте XML в каталоге res/layout и назовите его mylayout.xml

<LinearLayout
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal" >

        <Button
            Android:id="@+id/button1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Window test" />
</LinearLayout>
2
SuN

Применение гравитации помогло в моем случае

PopupMenu popup = new PopupMenu(this, v, Gravity.RIGHT);
5
Neeraj
popupwindow.showAsDropDown(view,x,y);

Здесь x и y - позиция всплывающего окна относительно вашего вида .

0
Sanket Kachhela