2010-10-18 129 views
0

我試圖在單擊按鈕時實現下拉列表。單擊按鈕時顯示列表視圖:Android

所以,我有一個文本視圖和導航欄(nav.xml)中的按鈕和相應的列表視圖。這個導航欄包含在另一個頁面(products.xml)

當按鈕被點擊時,我得到列表視圖正下方的按鈕(這是我想要的),但它的我移動當前的所有內容頁面向下,即使在導航欄中放置的文本視圖也向下移動。

我完全陌生於Android,任何示例或方式如何實現它 ???

回答

1

聽起來像你需要一個Spinner。這相當於Android的下拉列表。你可以找到一個例子here

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知道在哪裏顯示自己。如果下方有足夠的空間,它將顯示在我們的錨點視圖的左下角。如果沒有,它將顯示

相關問題