在一个范围点击空白,则做出相应的操作

本文介绍了一种在Android应用中实现点击Edittext下方空白区域时隐藏软键盘的方法。通过监听触摸事件并比较触摸位置与软键盘及Edittext的位置来判断是否需要隐藏软键盘。

需求:在点击某个Edittext下面的空白位置,则软键盘隐藏

代码:

@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		if (ev.getAction() == MotionEvent.ACTION_DOWN) {
			
			new GetIput_height().execute("");
			
			View v = getCurrentFocus();
			int pointY=(int) ev.getRawY();//手指点击的Y
			int[] locationTheme = new int[2];
			posting_post_details.getLocationOnScreen(locationTheme);//从屏幕顶端算起,也就是包括了通知栏的高度
			int themeY = locationTheme[1]+posting_post_details.getHeight();//edittext的Y
			
			int[] locationReply = new int[2];
			reply_face_linear.getLocationOnScreen(locationReply);
			int reply_face_linearY = locationReply[1];//软键盘的y
			if(pointY<reply_face_linearY && pointY>themeY){
				if (imm != null) {
					imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
					PostingAddFaceRelativeLayout.view.setVisibility(View.GONE);
					window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
					PostingAddFaceRelativeLayout.btn_face.setBackgroundResource(R.drawable.mess_gray);
				}
			}
			return super.dispatchTouchEvent(ev);
		}
		// 必不可少,否则所有的组件都不会有TouchEvent了
		if (getWindow().superDispatchTouchEvent(ev)) {
			return true;
		}
		return false;
	}


其中:

ev.getRawY():这个高度包括状态栏,相对这个屏幕

posting_post_details.getLocationOnScreen(locationTheme)也是相对整个屏幕

pointY<reply_face_linearY && pointY>themeY:手指点击的位置比软键盘的低,比EditText来的高

位置从:左上角开始算起(x,y)  越是往下,往右 ,y,x 越大~


图片解析:



setFocusable这个是用键盘是否能获得焦点
setFocusableInTouchMode这个是触摸是否能获得焦点


博主 炸斯特介绍 android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)很清晰:

还画了图:http://blog.youkuaiyun.com/jason0539/article/details/42743531




内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
### 如何在 Word 中实现一行排列 3-4 张图片 在 Word 文档中,可以通过多种方式来实现一行排列多张图片的效果。以下是具体的操作方法及其注意事项: #### 方法一:利用表格排版 1. 插入一个 **1 行 n 列** 的表格(n 为需要插入的图片数量)。 - 如果需要排列 3 张图片,则创建一个 1 行 3 列的表格;如果需要排列 4 张图片,则创建一个 1 行 4 列的表格。 2. 将每一张图片依次插入对应的单元格中[^1]。 3. 手动调整图片大小以适应单元格尺寸,并确保整体布局美观。 4. 点击表格工具下的【设计】选项卡,选择【边框】->【无框线】,隐藏表格边界。 此方法的优点在于,即使文档其他部分的内容发生变化,图片的布局也不会受到影响。然而需要注意的是,单元格的大小会随图片的大小动态变化,因此可能需要多次微调以达到理想效果。 --- #### 方法二:通过分栏功能排版 1. 在目标位置连续按三次或四次回车键(取决于需要排列几张图片),形成独立的段落区域。 2. 使用菜单中的【页面布局】->【分栏】命令,将该部分内容设置为所需的列数(如三栏或四栏)。 3. 在每一行的空白区域内插入相应的图片。 这种方法的优势在于无需手动调整图片大小,因为栏目宽度固定后,图片会自动适配其空间范围。不过缺点是,当图片比例较大时,可能会超出预设的栏目宽度,从而影响视觉效果。 --- #### 方法三:借助制表位精确定位 1. 定义适合当前页宽的若干个制表位作为各图片之间的间隔点。 - 点击屏幕顶部标尺上的任意位置,或者右键选择“制表位”对话框进行更精细设定。 2. 对准这些标记逐一粘贴所需展示素材对象上去即可完成初步摆放工作; 3. 向前后方向拖拽鼠标直至满足实际需求为止——即让它们紧密相邻又互不影响彼此间距离关系的同时保持水平一致性[^2]。 这种技术特别适用于那些追求高度精准度以及希望快速复制相同模式场景的应用场合之中。而且一旦确立好了基础框架之后就可以很方便地批量处理大量相似类型的资料项目了! --- #### 方法四:自动化脚本辅助 (高级技巧) 对于频繁执行类似任务的情况来说,编写一段VBA代码可能是最高效的选择之一。例如,在Microsoft Office环境下开发一个小应用程序专门用来解决这个问题将会极大地提升工作效率减少重复劳动时间成本等等好处多多[^3]。 下面是简单示例代码片段用于演示基本思路: ```vba Sub ArrangePicturesInRow() Dim pic As InlineShape For Each pic In ActiveDocument.InlineShapes With pic.LockAspectRatio = msoTrue '锁定纵横比防止变形 .Width = CentimetersToPoints(5) '统一指定宽度单位转换函数CentimeterToPoint()帮助计算像素值 End With Next pic Selection.ParagraphFormat.TabStops.ClearAll '清除原有标签停止符重新定义新参数列表如下所示... End Sub ``` 上述程序逻辑首先是遍历整个活动文档内的所有嵌入式图形组件实例集合`InlineShapes`,接着逐一对每一个成员应用相同的属性修改操作比如这里设置了固定的宽度数值并通过内置API接口实现了厘米转点数的功能最后一步则是清理掉原有的默认TabStop配置以便后续能够自由定制个性化的间距方案。 --- ### 总结 以上介绍了四种不同层次复杂程度各异的技术手段可供读者根据实际情况灵活选用最适合自己的解决方案来进行Word文件内部图像资源横向罗列布置作业流程优化改造升级等工作环节当中去实践探索尝试改进完善提高效率质量标准等方面做出贡献努力奋斗成就梦想吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值