2014-10-02 90 views
1

我已经为这个问题建立了很多解决方案,但是他们都没有为我工作。我想在片段中显示一个PopupWindow。这是我的代码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> 

任何建议的内容?我做错了什么?您的帮助将非常感激。

+0

我使用的是popupWindow.showAtLocation。它在代码 – martinc 2014-10-02 16:31:14

+0

检查'popupView.getWidth()'和'popupView.getHeight()'值是否大于0. – 2014-10-02 16:59:51

+0

@ G.T。两者都是0 ...没有注意到。我该如何解决它? – martinc 2014-10-02 17:12:31

回答

1

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

之前要求的宽度高度你的观点,你必须确保它已经绘就。对于您可以拨打下面的方法已经充气之后:

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

之后,您的视图的大小是可用的方法getMeasuredWidth()getMeasuredHeight()

+0

感谢您的帮助。添加了这些行。现在,它取得了正确的高度和宽度值,但弹出窗口仍然不会出现... – martinc 2014-10-02 17:42:01

+0

如果用'popupWindow.show()'替换最后两行,该怎么办? – 2014-10-02 17:50:07

+0

不能:“方法show()未定义为PopupWindow类型” – martinc 2014-10-02 19:11:31