单击按钮时显示列表视图:Android

时间:2010-10-18 21:55:34

标签: android list view

我正在尝试在单击按钮时实现下拉列表。

因此,我在导航栏(nav.xml)中有一个文本视图和一个按钮以及相应的列表视图。此导航栏包含在另一个页面(products.xml)

当点击按钮时,我得到按钮下方的列表视图(这是我想要实现的)但是我将当前页面上的所有内容向下移动,甚至移动到导航栏中的文本视图也移动了向下。

我是Android的新手,任何示例示例或如何实现它的方式 ???

2 个答案:

答案 0 :(得分:1)

听起来你需要Spinner。它相当于Android的下拉列表。您可以找到示例here

答案 1 :(得分:0)

因此,我们需要使用ListPopupWindow。 官方说明的链接:

  

http://developer.android.com/reference/android/widget/ListPopupWindow.html

让我们深入研究代码:

我们有自己的方法:

    public void downloadBtnSelected(View anchor) {
            final ListPopupWindow lpw = new ListPopupWindow(this);
            String[] data = { ".png", ".pdf", ".jpg", ".jpeg" };
            PopupAdapter pa = new PopupAdapter(data, this);
            lpw.setAdapter(pa);

            //setting up an anchor view
            lpw.setAnchorView(anchor);

            //Setting measure specifications. I'v used this mesure specs to display my
            //ListView as wide as my anchor view is
            lpw.setHeight(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
            lpw.setWidth(anchor.getRight() - anchor.getLeft());

            // Background is needed. You can use your own drawable or make a 9patch.
            // I'v used a custom btn drawable. looks nice.
            lpw.setBackgroundDrawable(this.getResources().getDrawable(
                    android.R.drawable.btn_default));

            // Offset between anchor view and popupWindow
            lpw.setVerticalOffset(3); 

            lpw.setOnItemClickListener(new OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                              /// Our action.....
                    lpw.dismiss();

                }
            });
            lpw.show();

        }

和带有onClickListener的按钮来调用此方法:

Button btn = new Button(this);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                downloadBtnSelected(v);

            }
        });

我们将View v参数作为锚点传递,以便让我们的PopupWindow知道在哪里显示自己。如果下面有足够的空间,它将显示在我们的锚点视图的左下角。如果不是 - 它将取代