今天在项目中写了一个弹出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>
如果可以直接把我的代码粘锅去
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);
}
这是效果图:
以上就可以完成一个简单的listview的弹出效果,如果你懂了可以添加在任何需要的项目中去!
共同学习,写下你的评论
评论加载中...
作者其他优质文章