zoukankan      html  css  js  c++  java
  • 动态添加PopupWindow

    动态添加PopupWindow的方法
    private void showPopupWindow() {
    LayoutInflater inflater = LayoutInflater.from(this) ;
    View view = inflater.inflate(R.layout.popup_check, null);
    mAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1,resIds_Chenk);
    ListView mListView = (ListView) view.findViewById(R.id.popup_listview);
    mListView.setAdapter(mAdapter);
    final PopupWindow mPopupWindow = new PopupWindow(view,
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    mPopupWindow.setFocusable(true);
    mPopupWindow.setOutsideTouchable(true);
    mPopupWindow.setBackgroundDrawable(getResources().getDrawable(
    R.drawable.popup_window_bg,null));
    mPopupWindow.showAsDropDown(mCategory,0, 0);
    mPopupWindow.update();
    mListView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    // TODO Auto-generated method stub
    if (mPopupWindow.isShowing()) {
    mCategory.setText(resIds_Chenk[position]);
    mPopupWindow.dismiss();
    }
    }
    });
    }


    R.layout.popup_check的布局文件
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/popup_list_bg"
    android:orientation="vertical" >

    <ListView
    android:id="@+id/popup_listview"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:cacheColorHint="#000000"
    android:divider="@color/white"
    android:dividerHeight="1dp"
    android:fadingEdge="none"
    android:listSelector="@drawable/listitem_selector"
    />

    </LinearLayout>


    注释:

    设置进场动画:
    mPop.setAnimationStyle(R.style.AnimationPreview);//设置动画样式

    mPop.setOutsideTouchable(true);//这里设置显示PopuWindow之后在外面点击是否有效。如果为false的话,那么点击PopuWindow外面并不会关闭PopuWindow。当然这里很明显只能在Touchable下才能使用。

    当有mPop.setFocusable(false);的时候,说明PopuWindow不能获得焦点,即使设置设置了背景不为空也不能点击外面消失,只能由dismiss()消失,但是外面的View的事件还是可以触发,back键也可以顺利dismiss掉。当设置为popuWindow.setFocusable(true);的时候,加上下面两行设置背景代码,点击外面和Back键才会消失。

    mPop.setFocusable(true);
    需要顺利让PopUpWindow dimiss(即点击PopuWindow之外的地方此或者back键PopuWindow会消失);PopUpWindow的背景不能为空。必须在popuWindow.showAsDropDown(v);或者其它的显示PopuWindow方法之前设置它的背景不为空:

    mPop.setBackgroundDrawable(new ColorDrawable(0));

    mPop.showAsDropDown(anchor, 0, 0);//设置显示PopupWindow的位置位于View的左下方,x,y表示坐标偏移量

    mPop.showAtLocation(findViewById(R.id.parent), Gravity.LEFT, 0, -90);(以某个View为参考),表示弹出窗口以parent组件为参考,位于左侧,偏移-90。

    mPop.setOnDismissListenerd(new PopupWindow.OnDismissListener(){})//设置窗口消失事件

  • 相关阅读:
    Django form组件
    python Ajax
    python 中间件
    python Cookie Session 相关用法
    python 模型 ORM简介
    python 视图 (FBV、CBV ) 、Request 和Response对象 、路由系统
    python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
    python MVC、MTV 框架介绍 Django 模板系统常用语法
    python 外键用法 多对多关系 ORM操作 模板相关
    python 异常处理模块 -堆栈信息(traceback)
  • 原文地址:https://www.cnblogs.com/niupi/p/5511038.html
Copyright © 2011-2022 走看看