WPopup - 一个简单使用并且高度定制的Popupwindow


<br/>
<br/>
<br/>

  • 自动设置show的位置
  • 自动设置倒三角的位置
  • 跟随手指点按位置弹出
  • 高度定制

依赖

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
        implementation 'com.github.wanglu1209:WPopup:lastReleases'
}
    

使用

普通操作

// 创建WPopup
val pop = WPopup.Builder(this)
      .setData(data)    // 设置数据,数据类为WPopupModel
      .setCancelable(false) // 设置是否能点击外面dismiss
      .setPopupOrientation(WPopup.Builder.HORIZONTAL)   // 设置item排列方向 默认为竖向排列
      .setOnItemClickListener(object : WPopup.Builder.OnItemClickListener {
          override fun onItemClick(view: View, position: Int) {
              // 设置item点击事件
              Toast.makeText(view.context, data[position].text, Toast.LENGTH_LONG).show()
          }
      })
      .create()
根据View自动设置显示位置
pop.showAtView(view)
根据view手动设置显示位置
pop.showAtDirectionByView(view, WPopupDirection.LEFT)
自己选择弹出位置 上下左右
pop.showAtDirection(WPopupDirection.BOTTOM)

<br/>
<br/>

骚操作 根据手指点击位置来显示

val longClickPop = WPopup.Builder(this)
      .setData(longData)
      .setPopupOrientation(WPopup.Builder.VERTICAL)
      .setClickView(longClickView) // 点击的View,如果是RV/LV,则只需要传入RV/LV
      .setOnItemClickListener(object : WPopup.Builder.OnItemClickListener {
          override fun onItemClick(view: View, position: Int) {
              Toast.makeText(view.context, "$position", Toast.LENGTH_LONG).show()
          }
      })
      .create()
自动挑选位置 默认为右下方
longClickPop.showAtFingerLocation()
手动挑选位置
longClickPop.showAtFingerLocation(WPopupDirection.TOP)

<br/><br/><br/>

方法及参数

WPopup已经为您设置好了通用的UI,您只需要自己配置参数即可

方法名参数类型默认值备注
setDataList<WPopupModel>null设置数据 参数为一个字符串,一个图片的resId
setCancelableBooleanfalse设置点击外面是否能dismiss
setOnItemClickListenerOnItemClickListenernull设置item点击事件
setPopupOrientationStringWPopupWindow.Builder.VERTICAL设置item的排列方向
setDividerColorIntColor.WHITE设置分割线的颜色
setDividerSizeInt1设置分割线的粗细
setDividerMarginInt10设置分割线边距
setIsDimBooleanfalse设置弹出时背景是否半透明
setDimValueFloat0.4f设置背景半透明的值 0.1f - 1f 值越大,越接近透明
setPopupBgColorIntColor.parseColor("#CC000000")设置弹出背景颜色
setPopupMarginInt1设置弹出时和view的距离
setClickViewViewnull设置长按事件的view
setAnimIntWPopupAnim.ANIM_ALPHA设置动画
setIconDirectionIntWPopupDirection.LEFT设置icon的方向 如果data中设置了图片的话
setTextColorIntColor.WHITE设置item中text的颜色
setTextSizeInt14设置item中text的大小

当然,如果默认的UI不适合您,您也可以自定义UI,只需传入一些参数即可

val customPopup = BasePopup(
      WPopParams(
              R.layout.view_custom, // layoutRes,必须参数
              this, // activity,必须参数
              true, // 背景是否变暗,非必须参数
              cancelable = false,
              width = ViewGroup.LayoutParams.MATCH_PARENT, // popup的宽 只支持LayoutParams里的
              height = ViewGroup.LayoutParams.WRAP_CONTENT
      )
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值