android popupwind背景半透明&recyclevi

2020-11-28  本文已影响0人  hao_developer

效果图:


image.png

popupwindow布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/tran_50"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_1"
        android:background="@color/hui_d8" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rvList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:overScrollMode="never" />

   <!--  自定义shape底部圆角  -->
    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_10"
        android:background="@drawable/white_bottom_cricle_shape" />

<!--  底部新增一个view做撑满  -->
    <View
        android:id="@+id/emptyView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

white_bottom_cricle_shape

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

    <solid android:color="@color/white"/>

    <corners android:bottomLeftRadius="@dimen/dp_10" android:bottomRightRadius="@dimen/dp_10"/>

</shape>

popupwindow

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.PopupWindow
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class StorePopupwindow(var context: Context, var listener:onAdapterAnyListener) : PopupWindow(),onAdapterAnyListener {

    var rvList:RecyclerView? = null
    var applyAdapter:StoreListAdapter? = null
    var emptyView:View? = null

    override fun onAdapterViewClick(postion: Int, data1: Any?, data2: Any?, data3: Any?) {
        listener?.onAdapterViewClick(postion,data1,data2,data3)
        this.dismiss()
    }

    init {

        width = ViewGroup.LayoutParams.MATCH_PARENT
        height = ViewGroup.LayoutParams.WRAP_CONTENT
        isOutsideTouchable = true
        val view = LayoutInflater.from(context).inflate(R.layout.popupwind_store_view,null,false)
        rvList = view.findViewById(R.id.rvList)
        emptyView = view.findViewById(R.id.emptyView)
        contentView = view

        applyAdapter = StoreListAdapter(context)
        applyAdapter?.setAdapterClickListener(this)
        val lm = LinearLayoutManager(context)
        lm.orientation = LinearLayoutManager.VERTICAL
        rvList?.let {
            with(it){
                layoutManager = lm
                addItemDecoration(DividerItemDecoration(this.context, DividerItemDecoration.VERTICAL))
                adapter = applyAdapter
            }
        }

        emptyView?.setOnClickListener { this.dismiss() }

    }

}

显示在某个view下面

val popupWindow = StorePopupwindow(this,this)
popupWindow.showAsDropDown(rlStoreLay,0,0)
上一篇下一篇

猜你喜欢

热点阅读