zoukankan      html  css  js  c++  java
  • android PopupWindow的使用

     1 private void showPopupWindow(View v) {
     2 
     3         // 一个自定义的布局,作为显示的内容
     4         View contentView = LayoutInflater.from(this).inflate(R.layout.view_popup_chginfo_details, null);
     5         
     6         // findViewById
     7         initPopView(contentView);
     8 
     9         popupWindow = new PopupWindow(contentView,
    10                 ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
    11 
    12         popupWindow.setWidth(280);
    13         popupWindow.setTouchable(true);
    14 
    15         popupWindow.setTouchInterceptor(new View.OnTouchListener() {
    16             @Override
    17             public boolean onTouch(View arg0, MotionEvent arg1) {
    18                 // TODO Auto-generated method stub
    19                 return false;
    20                 // 这里如果返回true的话,touch事件将被拦截
    21                 // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
    22             }
    23         });
    24 
    25         ColorDrawable dw = new ColorDrawable(0000000000);
    26         // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
    27         popupWindow.setBackgroundDrawable(dw);
    28 
    29         // 设置好参数之后再show
    30         popupWindow.showAsDropDown(v,10,0);
    31 
    32     }


    1.showAtLocation

    例如:showAtLocation(findViewById(R.id.search_ib), Gravity.TOP | Gravity.RIGHT,10, 10);

    第一个参数:这个view是要能获取到window唯一标示的(也就是只要能获取到window 标示,view是什么

    控件都可以),应该是标示这个pw添加到哪个window里面,对控制pw出现位置没有影响;

    第二个参数:请记住屏幕原点是屏幕的左上角。Gravity.TOP | Gravity.RIGHT指的就是屏幕的右上角,

    那么pw的中心点坐标是(屏幕宽,0)。pw默认是在屏幕的中间,也就是Gravity.LEFT表示pw的中心点

    坐标是(0,1/2屏幕高);

    第三、四个参数:偏移量是以第二个参数为基准点的,偏移量的方向与第二个参数有关。Gravity.TOP | Gravity.RIGHT,以屏幕右上角为原点

    ,pw往X轴负方向偏移10个像素,往Y轴正方向偏移10个像素;如果是Gravity.BOTTOM| Gravity.LEFT,

    以屏幕左下角为原点,pw往X轴正方向偏移10个像素,往Y轴正方向偏移10个像素。

    注意:这个偏移量可以是正的,也可以是负的。无论偏移多大,pw是不会跑出屏幕。具体往轴的那个方向

    偏移,跟第二个参数有关,对于Gravity.CENTER的情况,偏移量负表示往轴的负方向,正往轴的正方向

    2.showAsDropDown

    例如:showAsDropDown(MainActivity.this.findViewById(R.id.logo_iv),100,0),

    以R.id.logo_iv的左下角为原点,向X轴正方向偏移100个像素,Y轴方向偏移0个像素。

    注意:这个偏移量可以是正的,也可以是负的。无论偏移多大,pw是不会跑出屏幕。
  • 相关阅读:
    Codeforces 469D Two Sets
    Codeforces1249D2 Too Many Segments (hard version)
    Codeforces 796D Police Stations
    Codeforces 617E XOR and Favorite Number
    Codeforces 900D Unusual Sequences
    Python底层(一):列表
    最短路径笔记(一):Floyd
    竞赛题笔记(二):剪邮票
    图论题笔记(三):最少中转次数
    图论题笔记(二):城市地图
  • 原文地址:https://www.cnblogs.com/annieBaby/p/6679439.html
Copyright © 2011-2022 走看看