安卓改变系统menu默认弹窗宽度
时间: 2023-08-12 09:03:30 浏览: 112
要改变安卓系统menu默认弹窗宽度,你可以使用以下方法:
1. 使用反射获取MenuPopupHelper类中的mPopup变量,然后调用setWidth方法修改宽度。
```java
try {
Field field = popup.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
Object menuPopupHelper = field.get(popup);
Class<?> cls = menuPopupHelper.getClass();
Method method = cls.getDeclaredMethod("setWidth", int.class);
method.invoke(menuPopupHelper, width);
} catch (Exception e) {
e.printStackTrace();
}
```
2. 继承ListPopupWindow类,覆盖show方法,并在其中调用setWidth方法修改宽度。
```java
public class CustomListPopupWindow extends ListPopupWindow {
public CustomListPopupWindow(Context context) {
super(context);
}
public CustomListPopupWindow(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomListPopupWindow(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void show() {
super.show();
setWidth(width);
}
}
```
使用时,你可以使用CustomListPopupWindow类代替ListPopupWindow类。