要改变安卓系统OptionsMenu默认弹窗宽度 不是popmenu
时间: 2023-08-12 14:03:31 浏览: 154
对不起,我误解了你的问题。要改变安卓系统OptionsMenu默认弹窗宽度,你可以使用以下方法:
1. 使用反射获取MenuBuilder类中的mMenuView变量,然后调用setWidth方法修改宽度。
```java
try {
Field field = menu.getClass().getDeclaredField("mMenuView");
field.setAccessible(true);
Object menuView = field.get(menu);
Class<?> cls = menuView.getClass();
Method method = cls.getDeclaredMethod("setWidth", int.class);
method.invoke(menuView, width);
} catch (Exception e) {
e.printStackTrace();
}
```
2. 继承MenuPopupHelper类,覆盖show方法,并在其中调用setWidth方法修改宽度。
```java
public class CustomMenuPopupHelper extends MenuPopupHelper {
public CustomMenuPopupHelper(Context context, MenuBuilder menu, View anchorView) {
super(context, menu, anchorView);
}
@Override
public void show(int x, int y) {
super.show(x, y);
setWidth(width);
}
}
```
使用时,你可以使用CustomMenuPopupHelper类代替MenuPopupHelper类,并传递相应的参数。
阅读全文