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 设备不需要这个