2013-04-26 77 views
0

所以,我堆积了一个问题,使用一个可下拉选择项目列表的简单按钮。我找到了答案,但没有找到答案,所以我用我自己的方法解决了问题。如何从按钮创建一个下拉列表视图?

是这样的:

对不起,我不能发表图片,因为我没有足够的声誉。

所以下面我们如何能做到这一点,如果我们需要这当然:)

+7

你为什么不使用微调? – Analizer 2013-04-26 09:40:48

+0

我不知道什么是一个“简单”的按钮,“下拉列表中的项目”可能不是一个微调,真的... – 2013-04-26 09:42:10

+0

简单的按钮,下拉列表...惊人的 – Unknown 2013-04-26 09:45:45

回答

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知道在哪里显示自己。如果下方有足够的空间,它将显示在我们的锚点视图的左下角。如果不是,它会显示在上面。