为了账号安全,请及时绑定邮箱和手机立即绑定

PopupWindow弹出ListView

标签:
Android

今天在项目中写了一个弹出popupWindow选择站点,根据点击然后切换站点同时切换PageIndicator(根据页面绘制的圆点);

直接进入正题,我还是以代码的形式给大家讲解,这样也放便大家的使用

1.首先写好布局:

<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_centerHorizontal="true"

        >

         <EditText 

             android:id="@+id/et"

         android:layout_width="250dp"

         android:layout_height="40dp"

         android:singleLine="true"

         android:paddingRight="30dp"

        />

         <ImageView

             android:id="@+id/choice"

             android:layout_width="wrap_content"

             android:layout_height="wrap_content"

             android:layout_alignRight="@+id/et"

             android:layout_centerVertical="true"

             android:background="@drawable/open" />

    </RelativeLayout>

</RelativeLayout>

5bae0f0b0001641104220753.jpg

如果可以直接把我的代码粘锅去

2.在activity中找到我们写的布局id(此处省略),给imageView做监听弹出布局popupWindow

3.创建一个集合private List<String> list = new ArrayList<String>();

4.初始化listview的数据

private void initData() {

for (int i = 0; i < s.length; i++) {

list.add(""+1000+i);

}

//添加listview(创建适配器)

ListView();

}

5.自定义listview或者写listviewUI布局都是可以得,根据个人兴趣而言吧

private void ListView() {

//自定义Listview或者写好布局加载listview都是一样的

lv = new ListView(this);

//添加适配器

MyAdapter adapter = new MyAdapter();

lv.setAdapter(adapter);

//点击listview展开的条目

lv.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> adapterView, View view, int     position,

long id) {

mEditText.setText(list.get(position));//设置点击

mPopupWindow.dismiss();//点击后消失弹出框

}

});

}

6.给写好的listview添加适配器

private class MyAdapter extends BaseAdapter{


private View mView;

private TextView mName;

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return list.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View view, ViewGroup viewGroup) {

mView = view.inflate(mContext, R.layout.listview_adapter, null);

mName = (TextView) mView.findViewById(R.id.name);

mName.setText(list.get(position));

return mView;

}

}

7.回归到2,因为给imageview做点击监听要在监听里面做pop的弹出

private void showPop(){

//创建POP

mPopupWindow = new PopupWindow(lv, mEditText.getWidth(), 350);//editText的宽度

//设置点击

mPopupWindow.setFocusable(true);

//设置颜色

mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.argb(500, 0, 100, 0)));

//设置外部点击消失

mPopupWindow.setOutsideTouchable(true);

//最后别忘了show()出来

mPopupWindow.showAsDropDown(mEditText, 0, 0);

}

这是效果图:

5bae0f0c0001cf2d10801920.jpg


以上就可以完成一个简单的listview的弹出效果,如果你懂了可以添加在任何需要的项目中去!

原文链接:http://www.apkbus.com/blog-784586-61948.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消