Android 之PopupWindow弹出下拉列表
2016-01-29 14:47
489 查看
1. 首先看看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" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:layout_centerHorizontal="true" > <EditText android:id="@+id/et_text" android:layout_width="150dp" android:layout_height="40dp" android:singleLine="true" android:paddingRight="30dp" /> <ImageView android:id="@+id/iv_select" android:layout_alignRight="@+id/et_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/select" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:layout_marginTop="35dp" /> </RelativeLayout> </RelativeLayout>
看看Activity怎么实现的吧:
public class MainActivity extends Activity implements OnClickListener{
private IFLYFullScreenAd ad; private EditText et_text; private ImageView iv_select; private TextView tv_number; private ImageView iv_delete; private MyAdapter adapter; private List<String> list=new ArrayList<String>(); private android.widget.ListView listView; //默认为像素值px private int pwHeight=300; private PopupWindow window; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); et_text = (EditText) findViewById(R.id.et_text); iv_select = (ImageView) findViewById(R.id.iv_select); initListener(); initData(); } /** * 初始化数据 */ private void initData() { for (int i = 0; i <15; i++) { list.add(90000+i+""); } ListView(); } //创建ListView private void ListView(){ listView = new android.widget.ListView(this); //隐藏滚动条 listView.setVerticalScrollBarEnabled(false); adapter=new MyAdapter(); listView.setAdapter(adapter); //设置listview的点击事件 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { et_text.setText(list.get(position)); window.dismiss(); } }); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final View view=View.inflate(MainActivity.this,R.layout.adapter,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); //更新adapter notifyDataSetChanged(); int height=view.getHeight()*list.size(); if(height>pwHeight){ height=pwHeight; }else{ height=view.getHeight()*list.size(); } window.update(et_text.getWidth(), height); if(list.size()==0){ window.dismiss(); } } }); return view; } } /** * 初始化事件 */ private void initListener() { iv_select.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_select: showNumList(); break; default: break; } } /** * 将ListView的数据显示到列表中 * 第一个参数:是listView * 第二个参数:PopupWindow的宽度,和EditText的宽度一致 * 第三个参数:设置固定的高度 */ private void showNumList() { if(window==null){ //创建PopupWindow window = new PopupWindow(listView,et_text.getWidth(), pwHeight); } window.setFocusable(true); //设置背景图片 window.setBackgroundDrawable(new BitmapDrawable()); //设置外部点击消失 window.setOutsideTouchable(true); window.showAsDropDown(et_text); }
}
看看效果图:
相关文章推荐
- android eclipse 混淆jar代码
- Android监听程序进入后台,或者恢复到前台
- Android导入源文件没有自生成R.java和关于"@color"
- android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)
- Android — GestureDetector.OnGestureListener 详解
- android shape的使用
- 安卓的相机调用
- 使用Android studio添加assets目录
- android apk的更新下载
- Android应用 捕获应用崩溃的数据CrashHandler
- Android实现Button事件的处理
- Android 二维码扫码
- charter1 Android基础
- Android 第四天 (下午)
- Android系统服务-WindowManager
- Android 打造形形色色的进度条 实现可以如此简单
- Android Studio你不知道的调试技巧
- 观察者模式的扩展--随记
- Android开启新的activity并获取返回的结果
- Android开发之Intent