• 保存到桌面  加入收藏  设为首页
安卓应用

安卓-代码--PopUpWindow

时间:2016-10-18 12:27:59   作者:   来源:胜行天下   阅读:418   评论:0
继续学习

PopupWindow 一定要设置 .setFocusable(true);(部分设备获取不到焦点)

final PopupWindow pop要写在Onclick()方法外!!!!


setContentView(R.layout.activity_main);
  /*
   * v1为需要弹出的内容
   */
      LayoutInflater i = LayoutInflater.from(this);
      final View v1 = i.inflate(R.layout.tips, null);
    v1.setBackgroundResource(R.drawable.bg); 

  final Button btn = (Button) findViewById(R.id.btnPopUpWindow);

  /*
   * PopupWindow对象 ,传入v1内容,和布局参数
   */
  final PopupWindow pop = new PopupWindow(v1,
    ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT);

  findViewById(R.id.btnPopUpWindow).setOnClickListener(
    new OnClickListener() {

     @Override
     public void onClick(View v) {
      /*
       * 设置显示弹窗和关闭弹窗的动画,可以省略
       */
      // pop.setAnimationStyle(R.style.popwin_anim_style);
      /*
       * 以某一个view为参考显示
       */
      // pop.showAtLocation(v1, Gravity.CENTER_VERTICAL, 0,
      // 0);
      /*
       * 以某一个控件为参考显示
       */
      pop.showAsDropDown(btn, 50, 70);  // 显示弹窗

}


       pop.dismiss();// 关闭弹窗

////////////////////////
style中的弹出窗口和退出窗口的动画
    <style name="popwin_anim_style">
        <item name="android:windowEnterAnimation">@anim/animfile</item>
        <item name="android:windowExitAnimation">@anim/animgone</item>
    </style>




//////////////////////// 具体使用用例
    boolean clickflag = false;// 必须要在onClick(View v)外
    PopupWindow pop = null; // 必须要在onClick(View v)外

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

        case R.id.menuBottomMenu:

            if (clickflag == false) {
                LayoutInflater i = LayoutInflater.from(getActivity());
                View v1 = i.inflate(R.layout.testbu, null);

                pop = new PopupWindow(v1, ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);

                pop.setHeight(window_height / 11);

                pop.setFocusable(true);//必须写上,防止有的设备获取不到焦点
                pop.setTouchable(true);
                pop.setOutsideTouchable(true);
                pop.setBackgroundDrawable(new ColorDrawable()); // 也可BitmapDrawable()
                                        // ,必须要加
                                        // ,使返回键和setOutsideTouchable()生效

                pop.showAtLocation(menuBottomMenu, Gravity.BOTTOM, 0,
                        window_height / 11);
                pop.update();
                clickflag = true;
            } else if (clickflag == true || pop != null) {
                if (pop != null) {
                    pop.dismiss();
                    clickflag = false;
                }
            }

            break;

        default:
            break;
        }

    }

有任何疑问或技术合作都可联系我

微信:yanfahezuo 【推荐】

QQ:596957738


标签:PopUpWindow  安卓  
相关文章
相关评论

加我微信 596957738 (QQ同号)加我微信     QQ联系:596957738    地址:江苏省南京市浦口区

苏ICP备2023050353号

   

苏公网安备32011402010305号

江节胜的Gitee,江节胜的Git地址