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

做花藤字网站湖南手机版建站系统开发

做花藤字网站,湖南手机版建站系统开发,企业建设网站的目标,wordpress分页函数Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理 目录 Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理 一、简单介绍 二、现象描述 三、尝试的解决方案 1、根据应用的…

Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理

目录

Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理

一、简单介绍

二、现象描述

三、尝试的解决方案

1、根据应用的需求 在 AndroidManifest.xml 配置 android:windowSoftInputMode 

2、确保输入框获取焦点

3、确保 TextField 的键盘调用逻辑正确。可以通过手动调用键盘弹出和隐藏的方法来确保键盘能够正确弹出 尝试

4、焦点管理对于键盘弹出至关重要。通过以下方式确保焦点正确管理 尝试

5、在 TextField 的 onTap 事件中手动触发键盘弹出 尝试

6、最后的尝试的解决的方式是在 LauncherManifest.xml 进行配置


一、简单介绍

Flutter 是一款开源的 UI 软件开发工具包,由 Google 开发和维护。它允许开发者使用一套代码同时构建跨平台的应用程序,包括移动设备(iOS 和 Android)、Web 和桌面平台(Windows、macOS 和 Linux)。

Flutter 使用 Dart 编程语言,它可以将代码编译为 ARM 或 Intel 机器代码以及 JavaScript,从而实现快速的性能。Flutter 提供了一个丰富的预置小部件库,开发者可以根据自己的需求灵活地控制每个像素,从而创建自定义的、适应性强的设计,这些设计在任何屏幕上都能呈现出色的外观和感觉。

二、现象描述

环境与操作说明:

1、使用 Flutter 进行 module 相关页面的开发,其中,里面涉及到 TextField 交互,唤起输入法软键盘的操作,

2、然后 aar 集成到 Android 上,在 Android Studio 上进行相关的开发,

3、最后,在 aar 集成到 Unity,在 Unity 上进行打包

问题现象描述:

1、进行 Flutter 和 Android 端打包测试 使用 TextField 可以正常的进行 输入法软键盘 的唤起;

2、在集成到 Unity 上进行打包测试,使用 TextField 交互的时候,在华为的一些手机上没有立即弹出 输入法软键盘

三、尝试的解决方案(仅供参考,具体问题具体分析)

1、根据应用的需求 在 AndroidManifest.xml 配置 android:windowSoftInputMode 

<activityandroid:name=".YourActivity"android:windowSoftInputMode="stateHidden|adjustResize">
</activity>
  • stateVisible:软键盘默认可见。

  • adjustResize:当软键盘弹出时,调整布局大小

后来,发现使用 Unity 打的包依然,没有能够唤起输入法软键盘

最后添加

<activity android:name=".YourActivity"android:exported="true" android:launchMode="singleTop" android:configChanges="locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|density|layoutDirection|fontScale" android:windowSoftInputMode="adjustResize" android:hardwareAccelerated="true"android:theme="@style/UnityThemeSelector">

上面代码定义了一个 Android 应用中的 <activity> 元素,用于配置一个具体的活动(Activity)。以下是每个属性的详细解释:

1. android:name

  • 含义:指定活动的完整类名。

  • com.rayneo.adapter.MainActivity
    这表示该活动的类名为 MainActivity,位于 com.rayneo.adapter 包中。

2. android:exported

  • 含义:是否允许其他应用或组件启动该活动。

  • true
    表示其他应用可以通过意图(Intent)启动这个活动。如果设置为 false,则只有在同一应用内部才能启动该活动。

3. android:launchMode

  • 含义:定义活动的启动模式,控制活动在任务栈中的行为。

  • singleTop

    • singleTop:如果活动已经位于任务栈的顶部,再次启动该活动时不会创建新的实例,而是调用 onNewIntent() 方法。

    • 其他可能的值:

      • standard:每次启动都会创建新的实例。

      • singleTask:在任务栈中只保留一个实例,如果活动已经存在,则将该活动移到栈顶。

      • singleInstance:活动单独运行在一个任务栈中,不会与其他活动共享任务栈。

4. android:configChanges

  • 含义:声明活动可以处理的配置变化,避免因配置变化(如屏幕旋转、语言切换等)导致活动被销毁和重新创建。

  • locale|keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|density|layoutDirection|fontScale

    • locale:语言或地区变化。

    • keyboard:键盘类型变化。

    • keyboardHidden:键盘隐藏或显示。

    • orientation:屏幕方向变化(横屏或竖屏)。

    • screenLayout:屏幕布局变化。

    • uiMode:UI 模式变化(如夜间模式)。

    • screenSize:屏幕尺寸变化。

    • smallestScreenSize:最小屏幕尺寸变化。

    • density:屏幕密度变化。

    • layoutDirection:布局方向变化(如从左到右或从右到左)。

    • fontScale:字体缩放变化。

5. android:windowSoftInputMode

  • 含义:定义软键盘的显示和调整行为。

  • adjustResize

    • adjustResize:当软键盘显示时,活动的布局会自动调整大小,以确保内容不会被软键盘遮挡。

    • 其他可能的值:

      • adjustPan:当软键盘显示时,活动的布局会自动向上平移,以确保当前焦点控件不会被遮挡。

      • stateAlwaysHidden:软键盘默认隐藏。

      • stateAlwaysVisible:软键盘默认显示。

6. android:hardwareAccelerated

  • 含义:是否启用硬件加速。

  • true
    表示启用硬件加速,可以提高图形渲染性能,但可能会增加内存消耗。

7. android:theme

  • 含义:指定活动的主题样式。

  • @style/UnityThemeSelector
    这是一个资源引用,指向 styles.xml 文件中定义的 UnityThemeSelector 样式。主题定义了活动的外观和行为,例如窗口背景、按钮样式等。

总结

这段代码定义了一个名为 com.rayneo.adapter.MainActivity 的活动,配置了以下行为:

  • 允许从外部启动。

  • 使用 singleTop 启动模式,避免重复创建实例。

  • 可以处理多种配置变化,避免因配置变化导致活动被销毁和重建。

  • 软键盘显示时会调整布局大小。

  • 启用硬件加速以提高性能。

  • 使用 UnityThemeSelector 主题样式。

2、确保输入框获取焦点

在代码中,确保输入框(EditText)能够正确获取焦点。可以通过以下方式强制获取焦点并弹出软键盘:

EditText editText = findViewById(R.id.your_edit_text);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

如果输入框在 Dialog 中,可以在 Dialog 显示后弹出软键盘

dialog.setOnShowListener(dialogInterface -> {EditText editText = dialog.findViewById(R.id.your_edit_text);editText.requestFocus();InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
});

然后,可以使用 MethodChanel 的方式,在 Flutter 的 TextField 点击的时候进行调用

3、确保 TextField 的键盘调用逻辑正确。可以通过手动调用键盘弹出和隐藏的方法来确保键盘能够正确弹出 尝试

// 弹出键盘
SystemChannels.textInput.invokeMethod('TextInput.show');// 隐藏键盘
SystemChannels.textInput.invokeMethod('TextInput.hide');

4、焦点管理对于键盘弹出至关重要。通过以下方式确保焦点正确管理 尝试

FocusNode focusNode = FocusNode();focusNode.addListener(() {if (focusNode.hasFocus) {// 强制弹出键盘SystemChannels.textInput.invokeMethod('TextInput.show');}
});TextField(focusNode: focusNode,
)

5、在 TextFieldonTap 事件中手动触发键盘弹出 尝试

TextField(onTap: () {FocusScope.of(context).unfocus();WidgetsBinding.instance.addPostFrameCallback((_) {focusNode.requestFocus();});},focusNode: focusNode,
)

6、最后的尝试的解决的方式是在 LauncherManifest.xml 进行配置

LauncherManifest.xml 文件通常是一个配置文件,用于定义某些应用程序或系统组件的启动器(Launcher)相关设置。

<supports-screensandroid:smallScreens="true"android:normalScreens="true"android:largeScreens="true"android:xlargeScreens="true"android:anyDensity="true"/>

<supports-screens> 标签

这是一个用于声明应用支持的屏幕尺寸和密度的标签。它可以帮助系统在不同设备上更好地适配应用,或者限制应用在某些不支持的设备上安装。

属性解释

  1. android:smallScreens="true"

    • 表示应用支持小尺寸屏幕设备。

    • 小尺寸屏幕通常是指屏幕对角线小于 4.7 英寸的设备。

  2. android:normalScreens="true"

    • 表示应用支持普通尺寸屏幕设备。

    • 普通尺寸屏幕通常是指屏幕对角线在 4.7 英寸到 6.0 英寸之间的设备。

  3. android:largeScreens="true"

    • 表示应用支持大尺寸屏幕设备。

    • 大尺寸屏幕通常是指屏幕对角线在 6.0 英寸到 7.0 英寸之间的设备。

  4. android:xlargeScreens="true"

    • 表示应用支持超大尺寸屏幕设备。

    • 超大尺寸屏幕通常是指屏幕对角线大于 7.0 英寸的设备,例如平板电脑。

  5. android:anyDensity="true"

    • 表示应用支持所有屏幕密度。

    • 屏幕密度是指屏幕的像素密度,例如低密度(ldpi)、中密度(mdpi)、高密度(hdpi)、超高密度(xhdpi)等。

    • 设置为 true 表示应用可以自动适配不同密度的屏幕,系统会根据设备的屏幕密度选择合适的资源(如图片、布局等)。

作用

  • 兼容性:通过设置这些属性,应用可以明确支持哪些类型的设备。如果某些属性设置为 false,应用将不会在不支持的设备上安装。

  • 资源适配android:anyDensity="true" 确保应用可以根据设备的屏幕密度选择合适的资源,从而在不同设备上提供更好的用户体验。

其中,经过测试,最终生效,成功换出输入法软键盘 的关键配置是 :

android:anyDensity="true"

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

相关文章:

  • 赣州找工作的网站国家职业技能培训平台
  • 华为云网站备案流程西安百度推广电话
  • 浙江网站建设情况分析qq推广软件
  • 广州专业网站改版2022近期重大新闻事件10条
  • 武汉做网站训自动优化句子的软件
  • 做网站后台学什么专业千川推广官网
  • 网站开发实验室怎样制作网站
  • 网站建网站建设百度店铺注册
  • 做外贸批发用什么网站好seo实战密码
  • 求国外做任务赚钱的网站百度公司介绍
  • 合肥做企业网站的网络公司百度小说搜索风云榜排名
  • 汕头地区做网站的seo关键词是什么
  • 泊头哪里建网站呢上海培训机构整顿
  • 惠州网络推广公司徐州百度seo排名
  • 福建省建设注册管理中心网站seo是什么味
  • 网站域名到期百度网盘电脑版登录入口
  • 厦门h5建站google国际版
  • 泉州响应式网站建设百度新闻网
  • 找哪里做网站网站推广app软件
  • 自动推送百度wordpress苏州seo
  • 中国建设部官方网站关键词挖掘查询工具
  • 卓越科技建站无锡做网站哪个搜索引擎能搜敏感内容
  • 网站建设百度推广咨询热线百度助手app下载安装
  • 做金融必看网站免费推广网站平台
  • 网络营销作业策划方案重庆百度搜索优化
  • 网站建设应对客户问题的话术免费b2b平台推广
  • 基础建设年seo入门书籍
  • 建站网站 国外电子商务网站有哪些?
  • 信用门户网站建设方案沈阳网站建设
  • 域名价格预估百度seo推广价格