Popupwindow实现自定义的下拉菜单
2015-01-25 11:30
218 查看
学习之路又一案例,效果图如下
废话不说直接代码:
先是布局文件:
然后是listview的Item资源
下面是主要代码:
废话不说直接代码:
先是布局文件:
<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" tools:context=".MainActivity" > <EditText android:id="@+id/input" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="110dip" android:text="@string/hello_world" /> <ImageView android:id="@+id/down_arrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/down_arrow" android:layout_alignRight="@id/input" android:clickable="true" android:layout_marginTop="120dip" /> </RelativeLayout>
然后是listview的Item资源
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" tools:context=".MainActivity" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/user" /> <TextView android:id="@+id/tv_list_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_horizontal" android:text="@string/hello_world" /> <ImageView android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/delete" /> </LinearLayout>
下面是主要代码:
public class MainActivity extends Activity { protected static final String TAG = "MainActivity"; private EditText et_input; private ImageView iv_downarrow; private ListView listview; private PopupWindow popwin; private List<String> msgList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_input = (EditText) findViewById(R.id.input); iv_downarrow = (ImageView) findViewById(R.id.down_arrow); msgList = new ArrayList<String>(); //初始化菜单信息 for(int i=0;i<20;i++){ msgList.add("1818899000"+i); } initView(); iv_downarrow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //定义 popupWindow popwin = new PopupWindow(MainActivity.this); popwin.setWidth(et_input.getWidth());//设置宽度 popwin.setHeight(200);//设置宽度 popwin.setContentView(listview);//为popwin填充内容 popwin.setOutsideTouchable(true);//设置点击popwin以外的区域,总的关闭popwin popwin.showAsDropDown(et_input, 0, 0);//设置popwin的位置,在et_input下xy偏移量为0 } }); } private void initView() { // TODO Auto-generated method stub listview = new ListView(this); listview.setBackgroundResource(R.drawable.listview_background);//设置listView 背景 listview.setDivider(null);//设置条目之间的分隔线为null listview.setVerticalScrollBarEnabled(false);//设置listview垂直方向滚动条隐藏 listview.setAdapter(new MyAdapter()); } private class MyAdapter extends BaseAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return msgList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if(convertView == null){ convertView = View.inflate(MainActivity.this, R.layout.list_item, null); holder = new ViewHolder(); holder.tv_msg = (TextView) convertView.findViewById(R.id.tv_list_item); holder.iv_del = (ImageView) convertView.findViewById(R.id.delete); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.tv_msg.setText(msgList.get(position)); holder.iv_del.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //删除对应条目 msgList.remove(position); //更新adapter数据 MyAdapter.this.notifyDataSetChanged(); } }); convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //设置输入框 et_input.setText(msgList.get(position)); popwin.dismiss(); } }); return convertView; } private class ViewHolder{ private TextView tv_msg; private ImageView iv_del; } } }
相关文章推荐
- Android自定义Button结合PopupWindow和ListView实现顺序显示下拉菜单控件
- 自定义PopupWindow实现下拉菜单选项效果
- 分别用自定义PopupWindow和自定义Dialog实现下拉菜单
- Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)
- 【android开发】使用PopupWindow实现页面点击顶部弹出下拉菜单
- 【android开发】使用PopupWindow实现页面点击顶部弹出下拉菜单
- Android 用自定义PopupWindow实现自定义Toast
- android-使用PopupWindow实现随机排列的自定义密码键盘
- android开发步步为营之64:PopupWindow实现自定义弹出菜单
- 用PopupWindow实现自定义overflow
- 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
- Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)
- 自定义SWT日历控件及其下拉菜单组件的实现
- Android之自定义AlertDialog和PopupWindow实现(仿微信Dialog)
- Android的自定义Menu使用PopupWindow实现
- 使用TextView和PopupWindow实现下拉菜单效果,item等高
- android ICS式下拉菜单实现详解 PopupWindow
- javaScript模拟select下拉菜单,满足自定义select样式的需求+jquery实现
- android自定义弹出框popupwindow方式实现
- android利用PopupWindow实现点击工具栏弹出下拉菜单