http://www.cmd100.com/bbs/thread-9385-1-1.html
如何把listview添加到popupwindow窗口中呢?关于这个listview我就再不多说了,主要是实现popupwindow和美化popupwindow。先看看我做截图:
2 小时前 上传 下载附件 (33.51 KB)
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();            }        }    在layout中新建popupwindow.xml文件,具体内容如下,主要是对window的布局:
Java代码

<?xml version= "1.0" encoding= "utf-8" ?>    "http://schemas.android.com/apk/res/android"    
    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:id= "@+id/lv"    
        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" >            
            android:id= "@+id/submit"                   android:layout_width= "100dip"      
            android:layout_height= "50dip"                   android:text= "提交" />   
                     android:id= "@+id/cancel"      
            android:layout_width= "100dip"                   android:layout_height= "50dip"      
            android:text= "取消" />       
   
    新建rounded_corners_pop.xml,用于自定义窗口的样式文件,具体内容如下:
Java代码  

<?xml version= "1.0" encoding= "utf-8" ?>    "http://schemas.android.com/apk/res/android" >   
    "#ffffffff" />        "3dp" color= "#ffff8080" />   
    "10dp" />       
        android:left= "3dp"             android:top= "3dp"      
        android:right= "3dp"             android:bottom= "3dp" />   
   
这个就可以实现圆角的样式,周围的白边是通过在白的样式上面叠加黑色的来实现的。 其他样式文件大家可以参考上面的rounded_corners_pop.xml自己写。
2、在main.xml中添加按钮,一个用于显示window,一个用于隐藏window
Java代码

<?xml version= "1.0" encoding= "utf-8" ?>    "http://schemas.android.com/apk/res/android"    
    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:id= "@+id/myButton2"      
        android:layout_width= "100dip"               android:layout_height= "50dip"      
        android:text= "隐藏" />   
   
在activity中初始化这两个按钮,并添加监听事件:
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();   
        }        }   
};   

更多相关文章

  1. andrioid——checkbox勾选按钮自定义样式
  2. Android(安卓)Webview 使用Html播放音频文件
  3. Android(安卓)同时setTag两次保存多种值的示例代码
  4. Android——使用DatePicker和TimePicker显示当前日期和时间
  5. AndroidGUI27:findViewById返回null的解决办法
  6. Android客户端和服务器端数据交互的第二种方法
  7. Android判断当前界面是否是桌面(主页)
  8. android Shape使用(转)
  9. Android(安卓)2.3 代码混淆proguard技术介绍

随机推荐

  1. android 数据持久化简述
  2. Android(安卓)IPC 通讯机制源码分析
  3. 【Android(安卓)初学】11、关于Android当
  4. android关机重启流程代码
  5. Android(安卓)NDK入门之Hello Jni
  6. Rexsee API介绍:Android屏幕锁定Keyguard
  7. Android获取手机信号强度/信号格数
  8. Android中RelativeLayout各个属性的含义
  9. 基于MQTT实现Android消息推送(Push…
  10. Android(安卓)默认壁纸 简单分析