2015-10-27 2 views
1

У меня есть всплывающее меню в правом верхнем углу экрана. Я хочу поправить некоторые права. Как это сделать? Я не мог найти решения для этого. Каждый, где это делается с помощью всплывающего окна. Но я хочу это с помощью Popup Menu. Пожалуйста, помогите.Согласания с правильными кодами с очень полезными.Как установить маржу во всплывающее меню в Android?

Я хочу поставить некоторый запас справа от этого всплывающего меню I want to put some margin to the right of this popup menu

+1

Можете ли вы предоставить изображение нужного экрана? – DroidAks

+0

@DroidAks Я добавил свой желаемый экран. пожалуйста, проверьте. –

ответ

0
try { 
    Field fListPopup = menuHelper.getClass().getDeclaredField("mPopup"); 
    fListPopup.setAccessible(true); 
    Object listPopup = fListPopup.get(menuHelper); 
    argTypes = new Class[] { int.class }; 
    Class listPopupClass = listPopup.getClass(); 

    // Get the width of the popup window 
    int width = (Integer) listPopupClass.getDeclaredMethod("getWidth").invoke(listPopup); 

    // Invoke setHorizontalOffset() with the negative width to move left by that distance 
    listPopupClass.getDeclaredMethod("setHorizontalOffset", argTypes).invoke(listPopup, -width); 

    // Invoke show() to update the window's position 
    listPopupClass.getDeclaredMethod("show").invoke(listPopup); 
} catch (Exception e) { 
    // Again, an exception here indicates a programming error rather than an exceptional condition 
    // at runtime 
    Log.w(TAG, "Unable to force offset", e); 
} 
+1

Пожалуйста, объясните свое решение! – gaRos

+0

Отражение должно рассматриваться как хакерское обходное решение, а не решение. Должен быть правильный способ сделать это, особенно, что Material Design [страница] (https://material.io/guidelines/components/menus.html#menus-simple-menus) предполагает, что всплывающие окна должны иметь поля ... – quezak

Смежные вопросы