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的具体代码
    }


  • 相关阅读:
    ASP.NET 实现验证码以及刷新验证码
    使用纯生js操作cookie
    TesseractOCR Tutorials
    c# 解析JSON的几种办法
    ElasticSearch常用查询命令-kibana中使用
    ElasticSearch集成IK分词器
    Typora使用教程 之 PicGo集成做图床
    Kibana-CentOS7单机安装测试
    Elasticsearch-CentOS7单机安装测试
    CentOS7安装JDK8
  • 原文地址:https://www.cnblogs.com/niupi/p/5542519.html
Copyright © 2011-2022 走看看