http://www.cmd100.com/bbs/thread-9385-1-1.html
如何把listview添加到popupwindow窗口中呢?关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。先看看我做截图:
1、创建一个popupwindow,并设置相应的样式。
Java代码
private void popAwindow(View parent) {- if (window == null ) {
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代码
OnClickListener submitListener = new OnClickListener() {- @Override
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(); - }
- }
Java代码
<?xml version= "1.0" encoding= "utf-8" ?>- <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
android:orientation= "vertical" - android:layout_width= "fill_parent"
android:layout_height= "fill_parent" > - <TextView
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的例子" /> - <!-- 如果layout_width的值为fill_parent时,居中要用android:gravity= "center" -->
<ListView - android:id= "@+id/lv"
android:layout_width= "fill_parent" - android:layout_height= "wrap_content"
android:background= "@drawable/rounded_corners_list" /> - <LinearLayout
android:orientation= "horizontal" - android:layout_gravity= "center"
android:layout_width= "wrap_content" - android:layout_height= "wrap_content"
android:background= "@drawable/rounded_corners_list" > - <Button
android:id= "@+id/submit" - android:layout_width= "100dip"
android:layout_height= "50dip" - android:text= "提交" />
<Button - android:id= "@+id/cancel"
android:layout_width= "100dip" - android:layout_height= "50dip"
android:text= "取消" /> - </LinearLayout>
- </LinearLayout>
Java代码
<?xml version= "1.0" encoding= "utf-8" ?>- <shape xmlns:android= "http://schemas.android.com/apk/res/android" >
<solid android:color= "#ffffffff" /> - <stroke android:width= "3dp" color= "#ffff8080" />
<corners android:radius= "10dp" /> - <padding
android:left= "3dp" - android:top= "3dp"
android:right= "3dp" - android:bottom= "3dp" />
- </shape>
2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window
Java代码
<?xml version= "1.0" encoding= "utf-8" ?>- <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
android:orientation= "horizontal" - android:layout_width= "fill_parent"
android:layout_height= "fill_parent" - android:id= "@+id/lmain"
> - <Button
android:id= "@+id/myButton1" - android:layout_width= "100dip"
android:layout_height= "50dip" - android:text= "显示" />
<Button - android:id= "@+id/myButton2"
android:layout_width= "100dip" - android:layout_height= "50dip"
android:text= "隐藏" /> - </LinearLayout>
Java代码
OnClickListener bPop = new OnClickListener() {- @Override
public void onClick(View v) { - popAwindow(v);
} - };
- OnClickListener boff = new OnClickListener() {
@Override - public void onClick(View v) {
if (window!= null ){ - window.dismiss();
} - }
};