popupwindow不使用setContentView

时间:2013-07-08 18:52:40

标签: android android-layout

解决方案

感谢codeMagic的回答,解决问题的方法是使用setWidth()setHeight()方法设置宽度和高度

问题

的 我正在尝试使用以下代码在Android中显示PopupWindow,但它似乎无法正常工作

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        PopupWindow test = new PopupWindow();
        test.setContentView(inflater.inflate(R.layout.test, null, false));
        test.showAtLocation(findViewById(R.id.main_container), Gravity.CENTER, 0, 0);
    }
    ....
}

你能告诉我哪里出错了吗?

编辑: 我希望弹出窗口显示包含我在R.id.test中的布局,但是当我执行上面的代码时,没有任何反应。没有错误或任何错误

EDIT2: 在原始代码中添加了一些上下文

2 个答案:

答案 0 :(得分:1)

我决定使用PopupWindow来处理我现在正在做的事情。我在ListView所以它可能有点不同,但我不得不改变一些东西才能看到它。以下是我建议查看的一些内容,因为我没有看到任何明显错误的代码。

  1. 首先给View充气,确保它不会返回null
  2. 使用其他构造函数(我使用new PopupWindow(holder.textNotes, 500, 500, true);      - 用充气的holder.textNotes替换View,并使用适合您正在使用的屏幕的尺寸替换尺寸。 注意我使用了这个构造函数,因此我可以使其专注于EditText
  3. 3.我给了我的View背景颜色,所以我可以确保它显示

    创建PopupWindow的实例时,您可以使用几种不同的构造函数,您可以找到here in the Docs。我上面使用的那个允许您设置窗口的heightwidth。这可以避免需要vidhu在评论中指出的电话setHeight()setWidth()

答案 1 :(得分:0)

你应该调用方法update 显示弹出窗口