1、问题描述:DialogFragment中通过dataBinding绑定View,设置点击事件无效。

    private val binding: CoreDialogEditContentBinding by lazy {CoreDialogEditContentBinding.inflate(mContext.layoutInflater)}private fun initWindowView() {val view = LayoutInflater.from(mContext).inflate(R.layout.core_dialog_edit_content, null)setContentView(view)binding.editBtnConfirm.setOnClickListener(this)binding.editBtnCancel.setOnClickListener(this)}

解决方案:

通过binding设置的点击事件,那么setContent()中的参数使用应该如下,而不是重新手动生成一个View设置进去(建议:既然使用了dataBinding,那么调用控件视图的时候尽量用binding.view的方式)

    private fun initWindowView() {//        val view = LayoutInflater.from(mContext).inflate(R.layout.core_dialog_edit_content, null)
//        setContentView(view)setContentView(binding.root)binding.editBtnConfirm.setOnClickListener(this)binding.editBtnCancel.setOnClickListener(this)}

2、问题描述:DialogFragment中通过dataBinding绑定View,通过getWindow设置dialog位置和大小无效。

 //c错误写法private fun initWindowView() {binding.editBtnConfirm.setOnClickListener(this)binding.editBtnCancel.setOnClickListener(this)setCancelable(false)setCanceledOnTouchOutside(false)window?.attributes?.let {//显示位置it.y = mContext.resources.getDimensionPixelSize(R.dimen.px380)//显示大小it.width = mContext.resources.getDimensionPixelSize(R.dimen.px800)it.height = mContext.resources.getDimensionPixelSize(R.dimen.px660y)it.gravity = Gravity.TOPwindow?.setBackgroundDrawable(ColorDrawable())window?.attributes = it}//设置视图setContentView(binding.root)}

解决方案:

setContent()视图后,设置window才有效,分析: setAttributes(WindowManager.LayoutParams a)时,会通过dispatchWindowAttributesChanged() -> onWindowAttributesChanged()去更新dialog的根布局,将LayoutParams(大小位置等)设置进去,如果先设置window,然后设置setContent()视图,那么设置进去的视图实际上他的LayoutParams并不是你设置进去的,而是默认生成的,自然就没无效

//正确写法private fun initWindowView() {//设置视图(放在设置window之前)setContentView(binding.root)binding.editBtnConfirm.setOnClickListener(this)binding.editBtnCancel.setOnClickListener(this)setCancelable(false)setCanceledOnTouchOutside(false)window?.attributes?.let {//显示位置it.y = mContext.resources.getDimensionPixelSize(R.dimen.px380)//显示大小it.width = mContext.resources.getDimensionPixelSize(R.dimen.px800)it.height = mContext.resources.getDimensionPixelSize(R.dimen.px660y)it.gravity = Gravity.TOPwindow?.setBackgroundDrawable(ColorDrawable())window?.attributes = it}}

DialogFragment中通过dataBinding绑定View,设置点击事件无效,通过getWindow设置dialog位置和大小无效。相关推荐

  1. 在XML布局里给View设置点击事件

    给一个View设置监听点击事件是再普通不过的事情,比如 view.setOnClickListener(onClickListener); 另外一种做法是直接在XML布局里面指定View点击时候的回调 ...

  2. 在Activity中响应ListView内部按钮的点击事件的两种方法

    转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...

  3. 判断自定义异形view的点击事件是否在绘制区域内

    本文是摘抄自 这篇文章,此处作为记录,以备后期查阅使用.在此感谢原文作者的贡献. 使用recyclerview显示如下所示的列表,其中item是一个自定义六边形view,点击事件会有重叠情况,所以需要 ...

  4. Android Span富文本设置点击事件/超链接 - URLSpan/ClickableSpan

    ######为文字实现很丰富的特殊效果,下面来实现 点击事件/超链接 操作 so... 直接上效果: ##使用前提条件: textView.movementMethod = LinkMovementM ...

  5. android点击linearlayout没反应,LinearLayout设置点击事件的问题

    我给LinearLayout设置点击事件,LinearLayout中有一个ImageButton和一个TextView,为什么我点击Imagebutton无法触发点击事件,点击TextView就会触发 ...

  6. view.performClick()触发点击事件

    1.主要作用 自动触发控件的点击事件 2.界面的布局文件  activity_main.xml <RelativeLayout xmlns:android="http://schema ...

  7. Android实现侧滑抽屉菜单,android studio自带的抽屉侧滑菜单怎么设置点击事件?还头一回遇到,汗!...

    在你的activity,你需要inflate 你的menu folder@Override public boolean onCreateOptionsMenu(Menu menu) { MenuIn ...

  8. Android之BaseQuickAdapter(3.0.4版本)给子view添加点击事件(helper.addOnClickListener(view))的函数没了

    1.问题 用BaseQuickAdapter给子view添加点击事件,以前都是在适配器里面这么写的helper.addOnClickListener(view),现在这个函数没了 2.解决办法 直接在 ...

  9. [js] 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件?

    [js] 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件? 两次 先捕获,后冒泡 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一 ...

最新文章

  1. Redis实现消息队列
  2. create_softLink.sh
  3. java中interrupt,interrupted和isInterrupted的区别
  4. Visual C++中MFC消息的分类
  5. NBF事件中心架构设计与实现
  6. MyEclipse10 中设置Jquery提醒,亲测可用
  7. Xcode 5中缺少Provisioning Profiles菜单项
  8. pytorch: Tensor的创建与调整
  9. 为何近期QQ和MSN老是被攻击
  10. 编译libfetion时,提示 从 int 到 QString 的转换有歧义
  11. 支付系统 java_PaySystem
  12. 【软件测试】男生vs女生,谁更加适合?没有你发现不了的bug......
  13. python人工智能的重要性_为什么说Python是AI时代必备技能?
  14. Oracle查询语句及实例
  15. jmeter安装(jmeter安装配置)
  16. AppScan 安全漏洞扫描策略
  17. 软件设计七大设计原则
  18. python圆周率后100位_Python实现计算圆周率π的值到任意位的方法示例
  19. 利用Mavros控制无人机
  20. 二维码也能成为大英博物馆的展品?

热门文章

  1. 主板有电无法启动_电脑主板有电 但是就是开不了机
  2. 如何快速的将EXCEL表格数据拆分成多个文件
  3. 实现pygame自定义鼠标外形
  4. Java获取Excel中链接的文件
  5. word 插入mathtype公式对象后,默认环绕方式是浮于文字上方,每次插入后都得手动改成嵌入,如何解决?
  6. Html设置文本换行与不按行操作
  7. 挑战程序设计竞赛(第2版)pdf
  8. Android_studio 开发简单登陆界面
  9. ARouter 源码解析(零) 基本使用
  10. 阿里健康四面,阿里飞猪技术两面经历分享,已进阿里飞猪