PopupWindow 未在 API 19 上膨胀
PopupWindow not inflating on API 19
我的 PopupWindow 在我的 API 28,29 模拟器上工作得很好,但不确定为什么它在我的 API 19 真实设备上没有显示任何视图。 window 肯定是创建的,因为当我单击使视图膨胀的按钮时,它会聚焦。
我的自定义弹出窗口 window:
public class MessagesMoreMenu extends PopupWindow {
private static final String TAG = "MessagesMoreMenu";
private Context mContext;
public MessagesMoreMenu(Context context) {
super(context);
this.mContext = context;
setupView();
}
private void setupView(){
View view = LayoutInflater.from(mContext)
.inflate(R.layout.popupmenu_messagesmoremenu, null);
ButterKnife.bind(this, view);
setContentView(view);
}
}
它的用法:
private void inflateMoreMenu(View view){
PopupWindow popupWindow = new MessagesMoreMenu(mContext);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.showAsDropDown(view);
}
XML布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/popupmenu_messagesmore_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Report"
android:padding="16dp"
app:drawableLeftCompat="@drawable/icon_messages_report"
android:textColor="@color/colorBlackFont"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:drawablePadding="16dp"/>
<TextView
android:id="@+id/popupmenu_messagesmore_block"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="16dp"
android:padding="16dp"
android:text="Block"
app:drawableLeftCompat="@drawable/icon_alertdialog_block"
android:textColor="@color/colorBlackFont"
android:layout_below="@+id/popupmenu_messagesmore_report"
android:gravity="center_vertical"/>
</RelativeLayout>
请尝试
popupWindow.showAtLocation(mRelativeLayout, Gravity.CENTER,0,0);
这里的 mRelativeLayout 是来自您的 activity/fragment
的视图引用
很奇怪,但添加这个解决了我的问题...
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
我的其他非 API 19 设备不需要这个
我的 PopupWindow 在我的 API 28,29 模拟器上工作得很好,但不确定为什么它在我的 API 19 真实设备上没有显示任何视图。 window 肯定是创建的,因为当我单击使视图膨胀的按钮时,它会聚焦。
我的自定义弹出窗口 window:
public class MessagesMoreMenu extends PopupWindow {
private static final String TAG = "MessagesMoreMenu";
private Context mContext;
public MessagesMoreMenu(Context context) {
super(context);
this.mContext = context;
setupView();
}
private void setupView(){
View view = LayoutInflater.from(mContext)
.inflate(R.layout.popupmenu_messagesmoremenu, null);
ButterKnife.bind(this, view);
setContentView(view);
}
}
它的用法:
private void inflateMoreMenu(View view){
PopupWindow popupWindow = new MessagesMoreMenu(mContext);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.showAsDropDown(view);
}
XML布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/popupmenu_messagesmore_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Report"
android:padding="16dp"
app:drawableLeftCompat="@drawable/icon_messages_report"
android:textColor="@color/colorBlackFont"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:drawablePadding="16dp"/>
<TextView
android:id="@+id/popupmenu_messagesmore_block"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="16dp"
android:padding="16dp"
android:text="Block"
app:drawableLeftCompat="@drawable/icon_alertdialog_block"
android:textColor="@color/colorBlackFont"
android:layout_below="@+id/popupmenu_messagesmore_report"
android:gravity="center_vertical"/>
</RelativeLayout>
请尝试
popupWindow.showAtLocation(mRelativeLayout, Gravity.CENTER,0,0);
这里的 mRelativeLayout 是来自您的 activity/fragment
的视图引用很奇怪,但添加这个解决了我的问题...
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
我的其他非 API 19 设备不需要这个