当前位置: 首页 > wzjs >正文

免费制作网站的软件上海关键词seo

免费制作网站的软件,上海关键词seo,dw网页设计模板100套,wordpress链接 颜色实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…

实现弹窗随键盘上移的核心思路

在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。

// 在Activity或Fragment中设置键盘监听
val rootView = findViewById<View>(android.R.id.content)
rootView.viewTreeObserver.addOnGlobalLayoutListener {val rect = Rect()rootView.getWindowVisibleDisplayFrame(rect)val screenHeight = rootView.rootView.heightval keyboardHeight = screenHeight - rect.bottomif (keyboardHeight > screenHeight * 0.15) {// 键盘显示,调整弹窗位置adjustDialogPosition(keyboardHeight)} else {// 键盘隐藏,恢复默认位置resetDialogPosition()}
}

创建自定义弹窗布局

使用Dialog或DialogFragment时,需要确保布局可以动态调整位置。示例布局文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/dialog_container"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:id="@+id/dialog_content"android:layout_width="300dp"android:layout_height="wrap_content"android:layout_gravity="center"android:orientation="vertical"android:padding="16dp"><!-- 弹窗内容 --></LinearLayout>
</FrameLayout>

动态调整弹窗位置代码

通过修改布局参数实现位置调整:

private fun adjustDialogPosition(keyboardHeight: Int) {val dialogContent = dialog.findViewById<View>(R.id.dialog_content)val params = dialogContent.layoutParams as FrameLayout.LayoutParamsval screenHeight = resources.displayMetrics.heightPixelsval targetY = (screenHeight - keyboardHeight) / 2 - dialogContent.height / 2params.topMargin = targetYdialogContent.layoutParams = params
}private fun resetDialogPosition() {val dialogContent = dialog.findViewById<View>(R.id.dialog_content)val params = dialogContent.layoutParams as FrameLayout.LayoutParamsparams.topMargin = 0params.gravity = Gravity.CENTERdialogContent.layoutParams = params
}

处理WindowSoftInputMode

在AndroidManifest.xml中为Activity设置正确的软键盘模式:

<activityandroid:name=".YourActivity"android:windowSoftInputMode="adjustResize|stateHidden" />

注意事项

  1. 键盘高度计算需要排除系统状态栏和导航栏的影响
  2. 在横屏模式下需要特殊处理布局逻辑
  3. 不同Android版本可能存在行为差异,需要充分测试
  4. 对于DialogFragment,需要在onCreateView中获取根视图进行监听

是的,这是我直接使用AI生成的文章,看了下,大致都实现了,感觉现在博客这条下坡路确实要走到底了啊。

下面是我的代码:

 @Overridepublic void onStart() {super.onStart();// 在对话框显示后设置键盘监听setupKeyboardListener();}/*** 设置键盘监听*/private void setupKeyboardListener() { // 设置全局布局监听,检测键盘状态变化if (mContext instanceof android.app.Activity) {android.app.Activity activity = (android.app.Activity) mContext;View rootView = activity.findViewById(android.R.id.content);if (rootView != null) {mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {checkKeyboardStatus();}};rootView.getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);}}}/*** 检查键盘状态*/private void checkKeyboardStatus() {if (mContext instanceof android.app.Activity) {android.app.Activity activity = (android.app.Activity) mContext;View rootView = activity.findViewById(android.R.id.content);if (rootView != null) {android.graphics.Rect rect = new android.graphics.Rect();rootView.getWindowVisibleDisplayFrame(rect);int screenHeight = rootView.getHeight();int visibleHeight = rect.bottom - rect.top;// 判断键盘是否弹起(可视区域高度小于屏幕高度的75%)boolean keyboardVisible = visibleHeight < screenHeight * 0.75;if (keyboardVisible && !isKeyboardShown) {// 键盘弹起,计算对话框在剩余可见区域的居中位置isKeyboardShown = true;adjustDialogPosition(true, visibleHeight);} else if (!keyboardVisible && isKeyboardShown) {// 键盘收起isKeyboardShown = false;adjustDialogPosition(false, screenHeight);}}}}/*** 调整对话框位置* @param keyboardShown 键盘是否显示* @param visibleHeight 可见区域高度*/private void adjustDialogPosition(boolean keyboardShown, int visibleHeight) {if (getDialogHelper() == null) {return;}try {View contentView = getDialogHelper().getContentView();if (keyboardShown) {// 键盘弹起时,让对话框在剩余可见区域中居中显示getDialogHelper().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);// 对话框高度(根据布局文件dialog_quick_greet.xml约246dp)int dialogHeight = (int) (246 * mContext.getResources().getDisplayMetrics().density);// 计算让对话框在可见区域居中的上边距// 公式:(可见区域高度 - 对话框高度) / 2int centeredTopMargin = (visibleHeight - dialogHeight) / 2;// 设置最小边距,避免对话框贴着屏幕顶部int minTopMargin = (int) (50 * mContext.getResources().getDisplayMetrics().density);int topMargin = Math.max(centeredTopMargin, minTopMargin);setContentViewMargin(contentView, topMargin);} else {// 键盘收起时,恢复默认的居中位置 自己的方法getDialogHelper().setGravity(Gravity.CENTER);setContentViewMargin(contentView, 0);}} catch (Exception e) {e.printStackTrace();}}/*** 设置内容视图的上边距*/private void setContentViewMargin(View contentView, int topMargin) {if (contentView != null && contentView.getLayoutParams() instanceof android.view.ViewGroup.MarginLayoutParams) {android.view.ViewGroup.MarginLayoutParams params = (android.view.ViewGroup.MarginLayoutParams) contentView.getLayoutParams();params.topMargin = topMargin;contentView.setLayoutParams(params);}}

http://www.dtcms.com/wzjs/538676.html

相关文章:

  • 有实力的网站建设公司旅游网站开发 结束语
  • 开网站怎么开长沙营销型网站制作
  • 网易企业邮箱改密码厦门搜索引擎优化合作
  • 网站开发流程是什么东莞有哪些做网站
  • 小学校园网站建设鱼爪网商城网站如何建设
  • 西安自适应网站建设建设网站需申请什么手续
  • 企业手机网站建设定制百度竞价官网
  • 想做一个赌钱网站怎么做wordpress注册新用户
  • 祥云县网站网站建设设计规划
  • 黑群晖的做网站文件网站开发哪个更专业
  • 成都网站设计开发做得好常熟公司网站建设电话
  • 网站建站公司订单多吗学习做网站教程
  • 网站建设的主要技术指什么网站建设海报设计
  • 网站联盟是什么wordpress安装提示500
  • 购物网站前端浮动特效怎么做宁波seo推广哪家公司好
  • dw做简易表格网站wordpress怎么做主题
  • 性男女做视频网站咨询公司经营范围大全
  • 网站建设制作 南京公司哪家好网上做分销代销哪个网站好
  • 大连优化网站2021年度关键词有哪些
  • 医院网站开发方案企业图标设计图案大全
  • 华东网站建设外贸公司会计账务处理
  • 如何做网站答题领红包链接企业网站开发基本流程
  • 长沙企业建站程序本地佛山企业网站建设
  • 做期货与做网站的关系电子商务网站推广计划
  • 网站开发与数据库开发网站步骤
  • 郑州微网站建设网站运营职业分析
  • 哪个网站可以做卖房联合加工网
  • 做贸易的网站宣传片拍摄大纲
  • 旅游网站前台怎么做免费餐饮管理系统
  • 外贸企业网站开发新品手机上市