Android开发:实现popupwindow中显示listview
16lz
2021-01-26
http://www.cmd100.com/bbs/thread-9385-1-1.html
如何把listview添加到popupwindow窗口中呢?关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。先看看我做截图:
2 小时前 上传 下载附件 (33.51 KB)
1、创建一个popupwindow,并设置相应的样式。
Java代码
LayoutInflater lay = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = lay.inflate(R.layout.popupwindow, null );
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_view));
//初始化按钮 submit = (Button) v.findViewById(R.id.submit);
submit.setOnClickListener(submitListener); cancel = (Button) v.findViewById(R.id.cancel);
cancel.setOnClickListener(cancelListener);
//初始化listview,加载数据。 list=(ListView)v.findViewById(R.id.lv);
MyAdapter adapter= new MyAdapter(Main. this ); list.setAdapter(adapter);
list.setItemsCanFocus( false ); list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setOnItemClickListener(listClickListener);
window = new PopupWindow(v, 500 , 260 ); }
//设置整个popupwindow的样式。
window.setBackgroundDrawable(getResources().getDrawable(R.drawable.rounded_corners_pop)); //使窗口里面的空间显示其相应的效果,比较点击button时背景颜色改变。
//如果为false点击相关的空间表面上没有反应,但事件是可以监听到的。 //listview的话就没有了作用。
window.setFocusable( true ); window.update();
window.showAtLocation(parent, Gravity.CENTER_VERTICAL, 0 , 0 ); }
OnItemClickListener listClickListener = new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, View view, int position,
long id) { ViewHolder vHollder = (ViewHolder) view.getTag();
// 在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。 vHollder.cBox.toggle();
MyAdapter.isSelected.put(position, vHollder.cBox.isChecked()); } }; 给按钮添加监听事件:
Java代码
public void onClick(View v) { //这儿可以写提交数据的代码。
closeWindow(); }
};
OnClickListener cancelListener= new OnClickListener(){ @Override
public void onClick(View v){ closeWindow();
} };
private void closeWindow(){
//将每个checkbox的标记改为false,以便下次弹出window时是初始的状态。 for ( int j = 0 ; j < MyAdapter.isSelected.size(); j++) {
MyAdapter.isSelected.put(j, false ); ViewHolder vHollder = (ViewHolder) list.getChildAt(j).getTag();
vHollder.cBox.setChecked( false ); }
//提交数据时关闭popupwindow。 if (window != null ) {
window.dismiss(); } } 在layout中新建popupwindow.xml文件,具体内容如下,主要是对window的布局:
Java代码
android:orientation= "vertical" android:layout_width= "fill_parent"
android:layout_height= "fill_parent" >
android:id= "@+id/tip" android:layout_width= "wrap_content"
android:layout_height= "wrap_content" android:layout_gravity= "center"
android:textSize= "18dip" android:background= "@drawable/rounded_corners_list"
android:text= "这是一个popupWindow的例子" />
android:layout_width= "fill_parent" android:layout_height= "wrap_content"
android:background= "@drawable/rounded_corners_list" />
android:orientation= "horizontal" android:layout_gravity= "center"
android:layout_width= "wrap_content" android:layout_height= "wrap_content"
android:background= "@drawable/rounded_corners_list" >
Java代码
android:left= "3dp" android:top= "3dp"
android:right= "3dp" android:bottom= "3dp" />
2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window
Java代码
android:orientation= "horizontal" android:layout_width= "fill_parent"
android:layout_height= "fill_parent" android:id= "@+id/lmain"
>
android:id= "@+id/myButton1" android:layout_width= "100dip"
android:layout_height= "50dip" android:text= "显示" />
android:layout_width= "100dip" android:layout_height= "50dip"
android:text= "隐藏" />
Java代码
public void onClick(View v) { popAwindow(v);
} };
OnClickListener boff = new OnClickListener() {
@Override public void onClick(View v) {
if (window!= null ){ window.dismiss();
} }
};
更多相关文章
- andrioid——checkbox勾选按钮自定义样式
- Android(安卓)Webview 使用Html播放音频文件
- Android(安卓)同时setTag两次保存多种值的示例代码
- Android——使用DatePicker和TimePicker显示当前日期和时间
- AndroidGUI27:findViewById返回null的解决办法
- Android客户端和服务器端数据交互的第二种方法
- Android判断当前界面是否是桌面(主页)
- android Shape使用(转)
- Android(安卓)2.3 代码混淆proguard技术介绍