zoukankan      html  css  js  c++  java
  • Popupwindow 的简单实用,(显示在控件下方)

    第一步:

    private PopupWindow mPopupWindow;

    第二步:写一个popupwindow的布局文件XML
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#669E9E9E">
    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="#E4E4E4"
    >
    <TextView
    android:id="@+id/popupwindow_Jan"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="一月份"
    android:gravity="center"
    />
    <TextView
    android:id="@+id/popupwindow_Feb"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="二月份"
    android:gravity="center"
    />
    <TextView
    android:id="@+id/popupwindow_Mar"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="三月份"
    android:gravity="center"
    />
    </LinearLayout>
    </RelativeLayout>
    </LinearLayout>
    第三步:在Activity写代码
    public void onClick(View v) {
    switch (v.getId()) {
    case R.id.home_travel_modes_yuefen_textview:
    showPopupWindow(v);
    break;
    case R.id.popupwindow_Jan:
    showToastMsg("一月份");
    break;
    case R.id.popupwindow_Feb:
    showToastMsg("二月份");
    break;
    default:
    break;
    }
     public void showPopupWindow(View v){
    View contentView = LayoutInflater.from(HomeTravelModesActivity.this).inflate(R.layout.home_popuplayout, null);
    TextView JanText = (TextView)contentView.findViewById(R.id.popupwindow_Jan);
    TextView FebText = (TextView)contentView.findViewById(R.id.popupwindow_Feb);
    TextView MarText = (TextView)contentView.findViewById(R.id.popupwindow_Mar);
    JanText.setOnClickListener(this);
    FebText.setOnClickListener(this);
    MarText.setOnClickListener(this);
    final PopupWindow popupWindow = new PopupWindow(contentView,
    LinearLayout.LayoutParams.MATCH_PARENT, 300, true);
    popupWindow.setTouchable(true);

    // popupWindow.setTouchInterceptor(new View.OnTouchListener() {
    //
    // @Override
    // public boolean onTouch(View v, MotionEvent event) {
    //
    // Log.i("mengdd", "onTouch : ");
    //
    // return false;
    // // 这里如果返回true的话,touch事件将被拦截
    // // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
    // }
    // });
    // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
    // 我觉得这里是API的一个bug
    popupWindow.setBackgroundDrawable(getResources().getDrawable(
    R.mipmap.ic_launcher));
    // 设置好参数之后再show
    popupWindow.showAsDropDown(v);
    }

    注:
    若在Activity的onCreate()方法中直接写弹出PopupWindow()方法报错,因为Activity没有完全启动是不能弹出PopupWindow的,那我们只需要在Activity完全启动后在弹出PopupWindow就行了。
    重写一下onWindowFocusChanged()方法:
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    //弹出PopupWindow的具体代码
    }


  • 相关阅读:
    访问通讯录并设置联络人信息
    创建提醒事项
    iOS 高仿:花田小憩3.0.1
    iOS 手机淘宝加入购物车动画分析
    VTMagic 的使用介绍
    React Native 从入门到原理
    用户数据攻略-获取日历事件
    键盘收回方法
    提高jQuery执行效率需要注意几点
    你应该了解的jquery 验证框架
  • 原文地址:https://www.cnblogs.com/niupi/p/5542519.html
Copyright © 2011-2022 走看看