关于PopupWindow的两个问题

PopupWindow控件监听与显示
本文探讨了如何为PopupWindow中的子控件设置监听器,并解决了如何实现多个PopupWindow同步显示与隐藏的问题。通过具体代码示例展示了如何在Android应用中实现这些功能。
第一个问题:PopupWindow里面的控件怎么监听。
第二个问题:怎么实现上下两个PopupWindow同时出现,同时消失,如多看阅读(见下图)
我的项目里是这样的:点击出现一个PopupWindow,但是里面的四个也需要点击监听,我应该怎么做?



我自己是这样写的

package com.freeplay.microdiary.activities;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.PopupWindow;
import android.widget.TextView;

import com.freeplay.microdiary.R;

import static com.freeplay.microdiary.R.id.edit_All;

public class EditActivity extends Activity {

    private TextView pic_TextView;
    private TextView location_TextView;
    private TextView weather_TextView;
    private PopupWindow mPopupWindow1;
    private PopupWindow mPopupWindow2;
    private PopupWindow mPopupWindow3;
    private TextView lastPic_TextView;
    private TextView takePhoto_TextView;
    private TextView cancel_TextView1;
    private TextView cancel_TextView2;
    private TextView cancel_TextView3;
    private TextView pic_Library_TextView;
    private Context mContext = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        System.out.println("启动EditActivity");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_activity);

        mContext=this;

        /*
        找到控件
         */
        pic_TextView = (TextView) findViewById(R.id.pic_TextView);
        location_TextView = (TextView) findViewById(R.id.location_TextView);
        weather_TextView = (TextView) findViewById(R.id.weather_TextView);

        /*
        PopupWindow相关
         */
        View popupView1 = getLayoutInflater().inflate(R.layout.pic_menu, null);
        pic_Library_TextView = (TextView) findViewById(R.id.pic_Library_TextView);
        pic_Library_TextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println("点击了从图库里选择");
            }
        });

        mPopupWindow1 = new PopupWindow(popupView1, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT, true);
        mPopupWindow1.setTouchable(true);
        mPopupWindow1.setOutsideTouchable(true);
        mPopupWindow1.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null));
        mPopupWindow1.setAnimationStyle(R.style.anim_menu_bottombar);


        /*
        图片按钮监听器
         */
        pic_TextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println("图片按钮点击");
                /*
                呈现三个选项:选取最后一张,拍照,打开图库选择
                 */
                mPopupWindow1.showAtLocation(findViewById(R.id.edit_All), Gravity.BOTTOM, 0, 0);


            }
        });







    }



}

但是这样点开就报错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值