Android之简单自定义PopupWindow弹框实现

一:效果图、

二:实现步骤:

1.xml布局实现、

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/store_bgimg">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="214dp"
        android:layout_centerVertical="true"
        android:layout_marginLeft="31dp"
        android:layout_marginRight="31dp"
        android:background="@drawable/tkbjzj">

        <TextView
            android:id="@+id/tetle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="26dp"
            android:text="七天连锁酒店"
            android:textColor="#262626"
            android:textSize="18dp" />

        <TextView
            android:id="@+id/textdz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tetle"
            android:layout_centerHorizontal="true"

            android:layout_marginTop="34dp"
            android:text="你已领取本店7.5折优惠券"
            android:textColor="#ea302e" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_above="@+id/lineardb"
            android:background="#e6e6e6" />

        <LinearLayout
            android:id="@+id/lineardb"
            android:layout_width="match_parent"
            android:layout_height="44dp"
            android:layout_alignParentBottom="true">

            <TextView
                android:id="@+id/textwzdl"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="我知道了"
                android:textColor="#262626"
                android:textSize="16dp" />

            <TextView
                android:id="@+id/textckxq"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:background="#f86c6a"
                android:gravity="center"
                android:text="查看详情"
                android:textColor="#ffffff"
                android:textSize="16dp" />
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

2.drawable文件下的转角,然后在布局引用、

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 背景颜色 -->
    <solid android:color="#ffffff" />

    <!-- 控制边界线颜色和大小 -->
    <stroke
        android:width="1dp"
        android:color="#ffffff" />

    <!-- 控制圆角大小 -->
    <corners android:radius="4dp" />

</shape>

3.activity的实现、

/**
 * 弹框
 */
private View mPopupHeadViewy;//创建一个view
private PopupWindow mHeadPopupclly;//PopupWindow
private TextView tetle, textdz;//title,打折
private TextView textwzdl, textckxq;//我知道了,查看详情

@SuppressWarnings("deprecation")
private void popupHeadWindowcll() {
    mPopupHeadViewy = View.inflate(getActivity(), R.layout.tankuang_layout, null);
    tetle = (TextView) mPopupHeadViewy.findViewById(R.id.tetle);
    textdz = (TextView) mPopupHeadViewy.findViewById(R.id.textdz);
    textwzdl = (TextView) mPopupHeadViewy.findViewById(R.id.textwzdl);
    textckxq = (TextView) mPopupHeadViewy.findViewById(R.id.textckxq);
    mHeadPopupclly = new PopupWindow(mPopupHeadViewy, AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.MATCH_PARENT, true);
    // 在PopupWindow里面就加上下面代码,让键盘弹出时,不会挡住pop窗口。
    mHeadPopupclly.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
    mHeadPopupclly.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    mHeadPopupclly.setBackgroundDrawable(new BitmapDrawable());
    mHeadPopupclly.setOutsideTouchable(true);
    mHeadPopupclly.showAsDropDown(textviewid, 0, 0);
    textwzdl.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mHeadPopupclly.dismiss();
        }
    });
    textckxq.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mHeadPopupclly.dismiss();
            Toast.makeText(getActivity(), "查看详情", Toast.LENGTH_LONG).show();
        }
    });
}


 

注意:

1、mHeadPopupclly = new PopupWindow(mPopupHeadViewy, AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.MATCH_PARENT, true);
这句代码就是控制弹出框是铺满屏幕还是自适应、
2、mHeadPopupclly.showAsDropDown(textviewid, 0, 0);

这句话是这个弹框基于哪个控件之下,textviewid是控件名,后面两个是坐标

这是一个简单的自定义弹框,大神勿喷,有用的希望顶一下、、、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶已初秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值