1

伙计们。我对 Android 中的 PopupWindow 有疑问。
我有 2 个按钮,单击其中一个将显示一个 popupWindow,它是外部类中的成员变量。
任一 popupWindow 的内容和布局都不同。
我在 onClick 方法中更新 popipWindow 的内容,如下所示:

    bt1.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_a);
    });

    bt2.setOnClickListener(new OnClickListener{       
        onClick(View v){
            mPopupWin.setContentView(R.layout.layout_b);
    });

当我第一次单击其中任何一个时,它可以工作,popupWindow 显示,但是当我单击另一个时,popupWindow 没有按预期显示(mPopupWin 之前已正确关闭,并且 contentView 不为 NULL,并且宽度/高度不是0,我检查过......)。
当我再次单击第二个按钮时,popupWindow 正常显示。然后我尝试使用 AsycnTask 在 doInBackground 中 setContentView(),并在 onPostExecute() 中显示 popupWindow,一切正常。

我可以通过这种方式达到我的目的,但是我仍然想知道第一种方式有什么问题。
希望你的帮助,谢谢你:)

4

1 回答 1

1

我没有机会测试它,但尝试更改您的代码以使用update()

 bt1.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_a);
       mPopupWin.update();
});

bt2.setOnClickListener(new OnClickListener{       
    onClick(View v){
        mPopupWin.setContentView(R.layout.layout_b);
        mPopupWin.update();
});

根据文档

如果在弹出窗口显示时调用此方法,则该方法无效。

在决定是否调用时,您可能需要查看是否为isShowing ()update()

于 2013-07-08T19:00:56.567 回答