zoukankan      html  css  js  c++  java
  • pop

    
    
    package com.example.hellopopupwindow;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnTouchListener;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.Button;
    import android.widget.PopupWindow;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Context mContext = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mContext = this;
    
            Button button = (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View view) {
    
                    showPopupWindow(view);
                }
            });
        }
    
        private void showPopupWindow(View view) {
    
            // 一个自定义的布局,作为显示的内容
            View contentView = LayoutInflater.from(mContext).inflate(
                    R.layout.pop_window, null);
            // 设置按钮的点击事件
            Button button = (Button) contentView.findViewById(R.id.button1);
            button.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    Toast.makeText(mContext, "button is pressed",
                            Toast.LENGTH_SHORT).show();
                }
            });
    
            final PopupWindow popupWindow = new PopupWindow(contentView,
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true);
    
            popupWindow.setTouchable(true);
    
            popupWindow.setTouchInterceptor(new 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.drawable.selectmenu_bg_downward));
    
            // 设置好参数之后再show
            popupWindow.showAsDropDown(view);
    
        }
    
    }
    
    
     
     
    <?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="wrap_content"
        android:background="#FFBBFFBB"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="Hello My Window"
            android:textSize="20sp" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="Button"
            android:textSize="20sp" />
    
    </LinearLayout>
  • 相关阅读:
    leetcode933
    leetcode929
    leetcode31
    leetcode29
    leetcode166
    2019-9-2-win10-uwp-保存用户选择文件夹
    2019-9-2-win10-uwp-保存用户选择文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2019-9-2-C#判断文件是否被混淆
  • 原文地址:https://www.cnblogs.com/shangliang88/p/7572808.html
Copyright © 2011-2022 走看看