Android的PoupWindow简单使用实例(附Demo)


 目录

 1.简单实现一个PoupWindow 

 2.为PoupWindow设置监听事件 

 3.为PoupWindow实则按压效果 


Demo地址:https://github.com/zGuangYuan/Androidstudio_example   


效果图:

 


1.简单实现一个PoupWindow 

例子:

新建一个包,命名为PoupWindow

新建一个Empty Activity,命名为PoupWindowActivity:

在activity_main布局文件设置一个按钮跳转到PoupWindowActivity,这个活动:

然后再MainActivity,获取按钮控件实体,并绑定监听器:


打开activity_poup_window的布局文件,添加一个按钮:

 

在PoupWindowActivity,获取控件实体,并绑定监听器:


新建一个布局文件为这个PoupWindow提供子布局:

命名为:layout_poupwindow

设置一个列表:

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/TextView_goodId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textColor="@color/colorPrimaryDark"
        android:text="很好"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/colorGrid"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/colorGrid"/>

    <TextView
        android:id="@+id/TextView_sosoId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textColor="@color/colorPrimaryDark"
        android:text="一般"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/colorGrid"/>
    <TextView
        android:id="@+id/TextView_badId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textColor="@color/colorPrimaryDark"
        android:text="糟糕"
        android:gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"/>

</LinearLayout>

回到PoupWindowActivity:

现在就可以运行程序了:


2.为PoupWindow设置监听事件 

同样也是可以为这个PoupWindow的很好、一般、糟糕设置监听事件:

整体代码:

package com.example.yuan.e06_gridview.PoupWindow;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;

import com.example.yuan.e05_listview.R;
import com.example.yuan.e06_gridview.util.ToastUtil;

public class PoupWindowActivity extends AppCompatActivity {
    //声明引用
    private Button mPWButton;
    private PopupWindow mPoup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_poup_window);
        //获取控件实体
        mPWButton = (Button) findViewById(R.id.PoupWindow_Id1);
//        PoupWindowListener listener =new PoupWindowListener();
//        mPWButton.setOnClickListener(listener);
        //设置点击事件
        mPWButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.PoupWindow_Id1){
                    //把layout_popwindow布局引荐引入到这个Activity
                    View view = getLayoutInflater().inflate(R.layout.layout_popwindow,null);
                    //设置PoupWindow的布局、宽度和按钮一致和高度包含内容
                    //获取控件对象
                    TextView goodtextView = (TextView) view.findViewById(R.id.TextView_goodId);
                    TextView sosotextView = (TextView) view.findViewById(R.id.TextView_sosoId);
                    TextView badtextView = (TextView) view.findViewById(R.id.TextView_badId);
                    goodtextView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            ToastUtil.showMsg(getApplicationContext(),"很好");
                        }
                    });
                    sosotextView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            ToastUtil.showMsg(getApplicationContext(),"一般");
                        }
                    });
                    badtextView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            ToastUtil.showMsg(getApplicationContext(),"糟糕");
                        }
                    });

                    mPoup = new PopupWindow(view,mPWButton.getWidth(), ViewGroup.LayoutParams.WRAP_CONTENT);
                    //点击外部的时候可以收回
                    mPoup.setOutsideTouchable(true);
                    //按键按一下收回,再按一次弹出
                    mPoup.setFocusable(true);
                    //显示在按钮的下面
                    mPoup.showAsDropDown(mPWButton);
                }
            }
        });
    }

}

 3.为PoupWindow实则按压效果 

顺便再设置一下点击效果吧:

新建一个drawable文件,根布局为selector:

然后回到layout_poupwindow设置TextView控件布局文件的背景色:


再次运行程序,现在就拥有了点击事件和按压效果了:


猜你喜欢

转载自blog.csdn.net/qq_36243942/article/details/82710717