Android仿泡泡窗实现下拉菜单条实例代码

Android仿泡泡窗实现下拉菜单条实例代码,第1张

概述功能描述:点击下拉按钮,显示出所有的条目,有删除和点击功能,点击后将条目显示。

功能描述:点击下拉按钮,显示出所有的条目,有删除和点击功能,点击后将条目显示。

注意:泡泡窗默认是没有焦点的。要让泡泡窗获取到焦点。假如ListvIEw的item中有button,Imagebutton,CheckBox等会强制获取焦点的vIEw 此时,ListvIEw的item无法获取焦点,从而无法被点击 解决方法:给item的根布局增加以下属性 AndroID:descendantFocusability="blocksDescendants"设置之后,button获取焦点,item中其他控件也可以获取焦点,如果文本的文字过多,会被后面的图标盖住,首先设置单行androID:singleline="true"再设置右边距就盖不住androID:padding="40dp"

需要添加下面三项

//让泡泡窗额度条目获取到焦点     popupWindow.setFocusable(true);     //设置背景图     popupWindow.setBackgroundDrawable(new BitmapDrawable());     popupWindow.setoutsIDetouchable(true); 

主布局文件activity_main.xml

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"   xmlns:tools="http://schemas.androID.com/tools"   androID:layout_wIDth="match_parent"   androID:layout_height="match_parent"   androID:background="#22000000"   tools:context=".MainActivity" >   <relativeLayout      androID:layout_margintop="40dp"     androID:layout_wIDth="wrap_content"     androID:layout_height="wrap_content"     androID:layout_centerHorizontal="true"     >   <EditText     androID:ID="@+ID/et"     androID:singleline="true"     androID:padding="40dp"     androID:layout_wIDth="300dp"     androID:layout_height="40dp"     />   <ImageVIEw      androID:layout_wIDth="wrap_content"     androID:layout_height="40dp"     androID:ID="@+ID/iv_select"     androID:layout_centerVertical="true"     androID:background="@drawable/ic_launcher"     androID:layout_alignRight="@ID/et"     />   </relativeLayout> </relativeLayout> 

每一个条目的布局文件item_List.xml

<?xml version="1.0" enCoding="utf-8"?> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"   androID:layout_wIDth="match_parent"   androID:layout_height="match_parent"   androID:padding="5dp"   androID:orIEntation="horizontal" >   <TextVIEw      androID:layout_wIDth="0dp"     androID:layout_height="wrap_content"     androID:drawableleft="@drawable/ic_launcher"     androID:gravity="center_vertical"     androID:drawablepadding="3dp"     androID:text="123"     androID:ID="@+ID/tv_number"     androID:layout_weight="1"     />   <ImageVIEw      androID:ID="@+ID/iv_delete"     androID:layout_wIDth="wrap_content"     androID:layout_height="wrap_content"     androID:background="@drawable/ic_launcher"     /> </linearLayout> 

逻辑代码MainActivity.java

package com.lDW.select; import java.util.ArrayList; import androID.app.Activity; import androID.graphics.drawable.BitmapDrawable; import androID.os.Bundle; import androID.vIEw.VIEw; import androID.vIEw.VIEw.OnClickListener; import androID.vIEw.VIEwGroup; import androID.Widget.AdapterVIEw; import androID.Widget.AdapterVIEw.OnItemClickListener; import androID.Widget.BaseAdapter; import androID.Widget.EditText; import androID.Widget.ImageVIEw; import androID.Widget.ListVIEw; import androID.Widget.PopupWindow; import androID.Widget.TextVIEw; public class MainActivity extends Activity implements OnClickListener{   private ImageVIEw iv_select;   private EditText et;   private ArrayList<String> List = new ArrayList<String>();   private TextVIEw tv_number;   private ImageVIEw iv_delete;   private ListVIEw ListVIEw;   private PopupWindow popupWindow;   @OverrIDe   protected voID onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     initVIEw();     initListener();      initData();   }   private voID initVIEw() {     setContentVIEw(R.layout.activity_main);     iv_select = (ImageVIEw) findVIEwByID(R.ID.iv_select);     et = (EditText) findVIEwByID(R.ID.et);   }   private voID initListener() {     iv_select.setonClickListener(this);   }   //集合中添加数据   private voID initData() {     for(int i = 0; i< 20; i++){       List.add(1340000000 + i + "");     }     initListVIEw();   }   //初始化列表   private voID initListVIEw(){     ListVIEw = new ListVIEw(this);     //设置ListVIEw的背景图     ListVIEw.setBackgroundResource(R.drawable.ic_launcher);     //让ListVIEw的滚动条不可见     ListVIEw.setVerticalScrollbarEnabled(false);     MyAdapter adapter = new MyAdapter();     ListVIEw.setAdapter(adapter);     ListVIEw.setonItemClickListener(new OnItemClickListener(){       @OverrIDe       public voID onItemClick(AdapterVIEw<?> parent,VIEw vIEw,int position,long ID) {         et.setText(List.get(position));         //关闭泡泡窗         popupWindow.dismiss();       }     });   }   //泡泡窗实现点击显示列表,泡泡窗默认是不获取焦点的   private voID showNumberList(){     if(popupWindow == null){     //泡泡窗的填充,设置宽高     popupWindow = new PopupWindow(ListVIEw,et.getWIDth(),300);     }     //让泡泡窗额度条目获取到焦点     popupWindow.setFocusable(true);     //设置背景图     popupWindow.setBackgroundDrawable(new BitmapDrawable());     popupWindow.setoutsIDetouchable(true);     //第一个参数是依附哪一个参数下,x轴,y轴的偏移量,相对于第一个参数的左下角的位置     popupWindow.showAsDropDown(et,0);   }   @OverrIDe   public voID onClick(VIEw v){     switch (v.getID()){       case R.ID.iv_select:         //点击d出列表         showNumberList();         break;     }   }   //ListVIEw填充   class MyAdapter extends BaseAdapter{     @OverrIDe     public int getCount() {       return List.size();     }     @OverrIDe     public Object getItem(int position) {       return null;     }     @OverrIDe     public long getItemID(int position) {       return 0;     }     @OverrIDe     public VIEw getVIEw(final int position,VIEw convertVIEw,VIEwGroup parent) {       final VIEw vIEw = VIEw.inflate(MainActivity.this,R.layout.item_List,null);       tv_number = (TextVIEw) vIEw.findVIEwByID(R.ID.tv_number);       iv_delete = (ImageVIEw) vIEw.findVIEwByID(R.ID.iv_delete);       tv_number.setText(List.get(position));       //删除按键       iv_delete.setonClickListener(new OnClickListener(){         @OverrIDe         public voID onClick(VIEw v) {           //删除条目           List.remove(position);           //更新页面           notifyDataSetChanged();           //根据当前条目的个数设置,当前条目的高度           int ListVIEwHeight = List.size() * vIEw.getHeight();           if(ListVIEwHeight > 300){             ListVIEwHeight = 300;           }else{             ListVIEwHeight = ListVIEwHeight;           }           //更新泡泡窗的高度           popupWindow.update(et.getWIDth(),ListVIEwHeight);           //删除完了,泡泡窗小消失           if(List.size() == 0){             popupWindow.dismiss();             //下拉条消失             iv_select.setVisibility(VIEw.GONE);           }         }       });       return vIEw;     }   } } 

以上所述是小编给大家介绍的AndroID仿泡泡窗实现下拉菜单实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

总结

以上是内存溢出为你收集整理的Android仿泡泡窗实现下拉菜单条实例代码全部内容,希望文章能够帮你解决Android仿泡泡窗实现下拉菜单条实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1146305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存