DialogFragment中通过dataBinding绑定View,设置点击事件无效,通过getWindow设置dialog位置和大小无效。
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位置和大小无效。相关推荐
- 在XML布局里给View设置点击事件
给一个View设置监听点击事件是再普通不过的事情,比如 view.setOnClickListener(onClickListener); 另外一种做法是直接在XML布局里面指定View点击时候的回调 ...
- 在Activity中响应ListView内部按钮的点击事件的两种方法
转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...
- 判断自定义异形view的点击事件是否在绘制区域内
本文是摘抄自 这篇文章,此处作为记录,以备后期查阅使用.在此感谢原文作者的贡献. 使用recyclerview显示如下所示的列表,其中item是一个自定义六边形view,点击事件会有重叠情况,所以需要 ...
- Android Span富文本设置点击事件/超链接 - URLSpan/ClickableSpan
######为文字实现很丰富的特殊效果,下面来实现 点击事件/超链接 操作 so... 直接上效果: ##使用前提条件: textView.movementMethod = LinkMovementM ...
- android点击linearlayout没反应,LinearLayout设置点击事件的问题
我给LinearLayout设置点击事件,LinearLayout中有一个ImageButton和一个TextView,为什么我点击Imagebutton无法触发点击事件,点击TextView就会触发 ...
- view.performClick()触发点击事件
1.主要作用 自动触发控件的点击事件 2.界面的布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schema ...
- Android实现侧滑抽屉菜单,android studio自带的抽屉侧滑菜单怎么设置点击事件?还头一回遇到,汗!...
在你的activity,你需要inflate 你的menu folder@Override public boolean onCreateOptionsMenu(Menu menu) { MenuIn ...
- Android之BaseQuickAdapter(3.0.4版本)给子view添加点击事件(helper.addOnClickListener(view))的函数没了
1.问题 用BaseQuickAdapter给子view添加点击事件,以前都是在适配器里面这么写的helper.addOnClickListener(view),现在这个函数没了 2.解决办法 直接在 ...
- [js] 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件?
[js] 在DOM上同时绑定两个点击事件(一个用捕获,一个用冒泡),事件总共会执行几次,先执行哪个事件? 两次 先捕获,后冒泡 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一 ...
最新文章
- Redis实现消息队列
- create_softLink.sh
- java中interrupt,interrupted和isInterrupted的区别
- Visual C++中MFC消息的分类
- NBF事件中心架构设计与实现
- MyEclipse10 中设置Jquery提醒,亲测可用
- Xcode 5中缺少Provisioning Profiles菜单项
- pytorch: Tensor的创建与调整
- 为何近期QQ和MSN老是被攻击
- 编译libfetion时,提示 从 int 到 QString 的转换有歧义
- 支付系统 java_PaySystem
- 【软件测试】男生vs女生,谁更加适合?没有你发现不了的bug......
- python人工智能的重要性_为什么说Python是AI时代必备技能?
- Oracle查询语句及实例
- jmeter安装(jmeter安装配置)
- AppScan 安全漏洞扫描策略
- 软件设计七大设计原则
- python圆周率后100位_Python实现计算圆周率π的值到任意位的方法示例
- 利用Mavros控制无人机
- 二维码也能成为大英博物馆的展品?