1

我已经为这个问题找到了许多解决方案,但没有一个对我有用。我想在 Fragment 中显示一个 PopupWindow。这是我的代码

LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View popupView = layoutInflater.inflate(R.layout.pop_up_cargando, null,false);
this.popupWindow = new PopupWindow(popupView, popupView.getWidth(),popupView.getHeight());
this.popupWindow.setFocusable(true);
int location[] = new int[2];
this.btnInventario.getLocationOnScreen(location);
this.popupWindow.showAtLocation(this.btnInventario, Gravity.NO_GRAVITY, location[0], location[1] + btnInventario.getHeight()); // this.btnInventario is the button that calls this code
this.popupWindow.update(0, 0, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

但是 PopupWindow 永远不会出现。

编辑:这是 pop_up_cargando 的内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/popup_recomendar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="vertical" >
    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:id="@+id/cargando"/>
    <TextView
        android:id="@+id/txtTexto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_gravity="center"
        android:text="@string/vacio"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

有什么建议么?我做错了什么?您的帮助将不胜感激。

4

1 回答 1

2

您的popupView.getWidth()popupView.getHeight()值等于 0,因为尚未绘制视图。

在询问视图的宽度高度之前,您必须确保它已被绘制。为此,您可以在充气后调用以下方法:

popupView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);

之后,您的视图的大小可通过方法getMeasuredWidth()getMeasuredHeight().

于 2014-10-02T17:18:05.527 回答