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控件佈局文件的背景色:


再次運行程序,現在就擁有了點擊事件和按壓效果了:


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章