自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(200)
  • 收藏
  • 关注

原创 如何使用 Java 实现后台全局监听快捷键

说起使用 Java 实现快捷键,很多人都能想到,借助 Java 领域的 GUI 技术(如 Java Swing、JavaFX 等)就可以实现快捷键的功能。但是,使用这种方法实现的快捷键有一个致命的缺陷,那就是如果光标焦点离开此 UI 界面,则所有的快捷键都将失效。另外,这些快捷键是依附于一种 UI 界面来运行的,因此将占用额外的资源。这些都是一个很大的限制。本文就来探究一下如何设置一个后台运行的全局快捷键。给出的解决方案必须要让别人知道这个解决方案帮助别人解决了什么问题。

2022-07-02 21:47:43 5672 3

原创 Git 开发模式

Git 开发模式Git 小技巧创建 Git 分支文件夹Git 单体开发模式引导改进运行环境:Git 2.29.2.windows.2IntelliJ IDEA 2021.3 (Ultimate Edition)Git 小技巧创建 Git 分支文件夹  当 Git 项目中的分支达到一定数量时,有时候就希望可以像操作系统中的文件系统一样,可以将某个文件放入文件夹中。在 Git 中同样可以创建分支文件夹,并将某个分支置于某个分支文件夹中。  实际上,在 Git 中这样做很简单,只需要

2022-04-06 23:24:23 1288

原创 使用 GraalVM 将纯 JavaFX 项目打包成 EXE

使用 GraalVM 将纯 JavaFX 项目打包成 exeGraalVM 的环境搭建使用 GraalVM 打包不含 FXML 的纯 JavaFX 项目使用 GraalVM 打包含 FXML 的纯 JavaFX 项目测评在 IntelliJ IDEA 中直接运行生成 JAR 包后运行GraalVM 打包后运行总结  GraalVM 可以使得 Java 应用可以脱离 JVM 来运行。换句话说,它可以使 Java 应用在没有 Java 环境中运行。不过目前,这项技术还有很多的问题。由于 GraalVM 使用的

2022-02-09 21:43:19 9223 16

原创 Java 函数式编程与事件驱动模式

Java 函数式编程入门函数式编程实战改进  像 JavaScript 这种语言很早就支持闭包了,虽然 C++ 很早就有了函数指针,Java 也很早就提供了反射中的 Method 类,不过使用它们都不能算是真正的函数式编程(面向函数编程)。原因它们还不够方便和优雅。编程语言是为人类设计的语言,如果仅仅为了可实现,那任何编程思想、设计模式、架构模式都没有意义。  Java 从 Java 8 开始支持 lambda 表达式,这才算是支持函数式编程。函数式编程有什么好处呢?如果将其与依赖注入技术结合,可以很好

2022-02-01 03:08:59 2053

原创 高仿微信 Windows 端

高仿版 Windows 端微信版本 ` M.0.0 ` 运行效果图为什么要开发本项目基本信息开发环境编程语言技术指南使用指南技术内幕总括架构模式需要时才连接事件驱动模式对 Java 对象的透明传输二次序列化自研算法实现文本框回车发送信息而不换行,但组合键 Ctrl + Enter 换行计算文本所占像素的宽度特色功能通信暗号无声加好友数据库源代码  这是一款开源免费的高仿版 Windows 端微信,已拥有作为一款 IM 软件的基本功能。项目代码已在 GitHub 上开源免费发布,作者将对此项目提供持续更新与

2022-01-24 02:39:19 3866 3

原创 JavaFX 中使用多线程与保证 UI 线程安全

JavaFX 中使用多线程与保证 UI 线程安全JavaFX 中使用多线程JavaFX 中保证 UI 线程安全总结与补充  JavaFX 中的 UI 和大多数其它的编程语言一样,是单线程的。前人很早就已经多次尝试在 UI 上使用多线程,大多都已失败告终。为保证 UI 界面的流畅,UI 线程不能执行非常耗时的操作。如果 UI 线程执行正在非常耗时的操作,这个后果在 UI 界面的体现就是,UI 界面会一直停滞在执行耗时前的状态,然后此时如果马上多次随意点击 UI 界面的任何部位,此时会发生如下现象:应用的

2021-10-14 01:34:15 6337

原创 深入理解同步阻塞、同步非阻塞、异步阻塞、异步非阻塞

同步阻塞、同步非阻塞、异步阻塞、异步非阻塞之间的区别先验知识此处的异步指的是什么同步、异步、阻塞、非阻塞同步阻塞、同步非阻塞、异步阻塞、异步非阻塞一个生动的例子总结与补充先验知识  在解释这几个概念之前,需要注意的是:首先需要知道操作系统层面的同步、异步、阻塞这几个概念的含义。关于这方面的内容,可见笔者的另一篇博客:同步与异步、并行与并发、阻塞与挂起:https://blog.csdn.net/wangpaiblog/article/details/116114098 本文解释的概念至少适

2021-05-25 01:44:08 15556 5

原创 安卓 onActivityResult 废弃,registerForActivityResult 使用详解

registerForActivityResult 是 Activtity 的一个方法,它可以生成一个对象,该对象的 launch 方法可以启动一次 Activtity 调用流程。该对象可以启动一个 Activtity 并与之绑定,这样,将这个启动的 Activtity 回传时,接收回传数据的代码就无需使用请求码了。可以向 launch 提供一个实参来表示本次 Activtity 调用流程的输入。这个输入可以是任意类型,也可以为 null。// 这里的 this 指向的是一个 Activity。

2024-01-11 05:34:10 2951

原创 解决 Xshell 无法使用 root 账户远程登录 Linux 的问题

笔者在新安装的 Red Hat Enterprise Linux 中发现一个问题。在 RHEL 安装完之后,无法在 Xshell 中使用 root 账户远程登录此 Linux,但用其它账户登录然后切换到 root 账户就不会有问题。

2023-12-04 23:54:48 4894 1

原创 在 SQL 中,当复合主键成为外键时应该如何被其它表引用

而很奇妙的是,表 User、Folder 和 Contact 都有一个形同“userId”的字段,而且,它们的这个字段的意义是相同的。在 MySQL 中,如果建表时错误地将上述表 Contact 中的 userId 引用了表 User 中的 id,MySQL 并不会抛出错误,因为 MySQL 关于这方面不太严谨。因为 User 的主键不是复合主键,而且表 Contact 已经通过属性 linkedUserId 引用了表 User 的主键 id,因此不需要强制引用 User 的其它属性。

2023-11-14 01:08:49 4710

原创 解决 MyBatis 一对多查询中,出现每组元素只有一个,总组数与元素数总数相等的问题

对于笔者的一对多的查询结果,出现了这样的一个现象:原来每个组里有多个元素,查询目标是查询所查的组,以及每个组中的元素。如果一个用户有 3 个好友,每组 4 个好友,则上述代码的查询结果会变成,该用户有 12 个好友分组,每个分组 1 个好友。MyBatis 对于多表查询,要求组元素的字段必须是基本类型,而笔者编程时非常喜欢隔离、封装、解耦,擅自在上面将组元素的字段封装成了一个单独的类,然后把这个类的对象作为组元素的字段。笔者之后在不断地建新的更基本的表,进行一对多查询,终于让笔者发现了问题所在。

2023-10-17 23:08:58 4267

原创 在 IntelliJ IDEA 中远程部署 Java 程序

  在 IntelliJ IDEA 中进行远程调试与远程部署是不同的。  远程调试指的是事先以其它方法将 Java 应用打包并放在远程服务器中,然后以调试模式运行该 Java 应用,最后使用本地的 IntelliJ IDEA 进行远程连接该应用。  远程部署指的是直接使用本地的 IntelliJ IDEA 将本地的 Java 应用打包、部署到远程服务器,并远程运行该应用。  可以看出,远程部署要比远程调试方便很多。  关于在 IntelliJ IDEA 中远程调试 Java 程序,可见笔者的另一篇博客:  

2023-09-12 00:46:56 2368

原创 在 Windows 上远程对 Linux 进行抓包

  什么是远程对 Linux 进行抓包?这指是在一台机器上查看另一个台远程 Linux 的网络的流量传输情况。为什么需要远程进行抓包呢?这是因为在远程的那台 Linux 可能不方便运行常规的抓包软件。比如,有可能是因为自己习惯在 Windows 下使用的那个 GUI 抓包软件不能在远程的那台 Linux 运行,或者远程的那台 Linux 没有电脑显示屏等等。这些原因都会导致需要远程对 Linux 进行抓包。为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上

2023-09-07 05:43:29 1575

原创 Maven 和 Gradle 官方文档及相关资料的网址集合

Maven 仓库依赖包官方查询通道:https://mvnrepository.com/Maven 插件官方文档:https://maven.apache.org/plugins/安卓依赖包官方查询通道*:https://maven.google.com/web/Maven 下载安装教程:https://blog.csdn.net/wangpaiblog/article/details/112689500Maven 配置文件 POM 的常用插件配置代码:https://blog.csdn.net/wangp

2023-09-06 03:33:49 664

原创 安卓疑难布局问题解决:仿微信对话框中,如何控制对话框的文本自适应且各组件不超出父组件

在安卓组件 XML 布局中,有时候会遇到较复杂的约束关系。比方说,对于下面这个消息对话框中的消息文本,希望它可以文本框大小自适应,且在各组件先后位置确定的情况下,各组件都不超出父组件。限定只能使用 XML 来完成这一功能。如下图所示,当文本只有一行时,文本框的宽度自动调整至正好包裹文本。如下图所示,当文本有多行时,文本框的宽度存在一个最大值,且不会将其它组件挤出屏幕外。文本框的高度则伸长至正好包裹文本。有些读者可能很敏感,没错,这就是高仿微信的消息对话框。当然,实际上的对话框,其左边的背景是白色的,这里为了

2023-09-04 00:57:11 136

原创 如何在 Spring Boot 中集成日志框架 SLF4J、Log4j

因为 Spring Boot 已经内置了 Logback,所以需要先将 Logback 移除。移除的方法是在 Spring Boot 依赖包中移除 Logback。引入与 Spring Boot 适配的 Log4j2 依赖包。

2023-08-08 23:46:34 2387

原创 如何将安卓 Gradle 模块打包发布到本地 Maven 仓库

笔者的运行环境:JDK 17Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle 项目适用的方法,对 Android 项目是不适用的。因为普通 Gradle 项目打包生成的是 JAR 包,而 Android 项目打包生成的是 AAR 包。不过说到底,AAR 包和 JAR 包一样,也就是一种压缩包。只不过,AAR 包是在 JAR 包的基础之上的二次压缩。

2023-08-07 22:10:20 1816 3

原创 Linux 下设置开机自启动的方法

进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:各种操作系统安装教程大全:https://blog.csdn.net/wangpaiblog/article/details/115436520 为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇博

2023-08-06 23:03:43 1259

原创 解决 Android Studio 的 Gradle 面板上只有关于测试的 task 的问题

笔者的 Android Studio 的 Gradle 面板上居然除了用于测试的 task 之外,其它什么 task 都没有。解决办法也很简单。这是因为 Android Studio 默认屏蔽了其它 task。开启即可。开启的方法是去掉下面的勾选项。

2023-08-05 20:45:00 1183

原创 Nacos 下载安装教程

进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:各种操作系统安装教程大全:https://blog.csdn.net/wangpaiblog/article/details/115436520 为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇博

2023-08-02 02:42:19 915

原创 Linux 操作系统 Red Hat Enterprise Linux 安装教程

安装此操作系统的难题在于,在安装此系统之前,自己的操作系统是 Windows,而这两个系统是不兼容的。也就是说,如果当前的操作系统是 Windows,那就必须使用外部介质(如 U 盘)来安装其它操作系统,且此 U 盘内的操作系统必须先于电脑系统盘中的 Windows 启动。假设读者此时已经安装好 RHEL 了,前面已经提到过,RHEL 不是免费的,因此此处还需要订阅 RHEL。一种是内置的 GUI 界面,另一种是在终端使用命令。另外,下载时要选择 DVD 版本的,这个版本的安装包将近 10G,请留意。

2023-08-01 02:42:55 2246

原创 Spring 官方文档及相关资料的网址集合

Maven 仓库依赖包官方查询通道 Maven 插件官方文档 安卓依赖包官方查询通道 Spring Framework 官方文档

2023-07-23 17:04:30 973

原创 解决安卓OkHttp报错UnknownServiceException CLEARTEXT communication to not permitted by network security

原来这个报错是因为笔者在调试时使用 OkHttp 发送的是 HTTP 明文请求,因此该请求被安卓阻止。

2023-07-21 00:37:16 377

原创 解决Spring报错Content-Type applicationx-www-form-urlencoded;charset=UTF-8 is not supported

这是因为上面使用 OkHttp 发送 POST 请求时,使用的是 FormBody.Builder() 构造的请求体,这样发送的 HTTP 报文的 Content-Type 就会被设置成 application/x-www-form-urlencoded;charset=UTF-8。而后端 Spring MVC 在接收端使用的是 @RequestBody 注解,这样就会只认可值为 application/json 的 Content-Type。因此,Spring Cloud 微服务拒绝了这个请求。

2023-07-20 00:41:11 1609

原创 解决安卓OkHttp报错java.net.SocketException socket failed EACCES (Permission denied)

原来这个报错是因为笔者忘记在安卓清单文件中为该应用开启网络权限,因此该请求被安卓阻止。最近笔者在安卓中使用 OkHttp 向本地服务器发送请求的时候,发生了如下报错。开启网络权限的办法也很简单。中使用如下代码即可。

2023-07-19 00:10:23 991

原创 解决Gateway报错Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway

最近笔者使用 Spring Cloud Gateway 的时候,发生了一个奇怪的事情:Spring Cloud 其它的微服务的运行是正常的,但 Spring Cloud Gateway 一启动就报错。

2023-07-18 03:08:11 1216

原创 解决Nacos显示服务已注册,但RestTemplate和OpenFeign调用失败:UnknownHostException

最近笔者进行 Spring Cloud Alibaba 版本升级的时候,发生了一个奇怪的事情:Nacos 显示服务已注册,但 RestTemplate 和 OpenFeign 的调用却一直失败。具体来说,笔者的两个服务,均在 Nacos 网页管理页面中显示各自的服务名,但一个服务使用 OpenFeign 调用另一个服务时,一直失败,OpenFeign 的 fallback 类方法一直被触发,而且没有抛出任何异常。

2023-07-17 02:39:23 4368 1

原创 解决RHEL服务自启动时报错service Failed to locate executable...Failed at step EXEC spawning...Permission denied

中给出了 Nacos 的启动命令,然后设置了 Nacos 服务的自启动。但 Red Hat Enterprise Linux 9 重启后,笔者发现 Nacos 并没有启动,Nacos 端口号并没有生成。最近笔者在 RHEL 上设置包括 Nacos、Redis 等等多个软件的开机自启动时,都在开机启动时失败,而且报错信息核心内容都相同,都是启动时执行启动脚本发生一种“权限被拒绝”的错误。这样之后,Nacos 的服务就正常启动了。中的 Nacos 的启动命令,发现这个命令的运行是没有问题的。

2023-07-09 22:09:09 3412 2

原创 如何在 Linux 中将本地网络 IP 设置为静态的

的 IP 已经改变了,因为 Xshell 中显示与这台 Linux 的连接已经断开了。目录,可以看到下面有一个关于笔者的这台 Linux 的本地有线网络。进入此目录的方法有很多,不详细介绍,这里笔者使用的是 Xftp。这印证了前面笔者的这台 Linux 的本地有线网络。可以看出,笔者的这台 Linux 的本地有线网络。可以看出,笔者的这台 Linux 的本地有线网络。可以看出,笔者的这台 Linux 的本地有线网络。现在,笔者的这台 Linux 的本地有线网络。的 IP 是动态生成的,这不符本文的要求。

2023-07-05 23:37:33 1957

原创 如何把一个 Git 仓库的分支加入另一个无关的 Git 仓库

笔者需要将两个无关的 Git 仓库合并,也就是把一个 Git 仓库的分支加入另一个无关的 Git 仓库。但旁仓库可以是远程服务器上的,也可以是本地的,不需要下载到本地。在 TortoiseGit 填写旁仓库的仓库地址,旁仓库的地址可以是远程服务器上的,也可以是本地的。称吸收另一个无关 Git 仓库的 Git 仓库为。直接将旁仓库的分支签出,即可吸收旁仓库的分支。可以看到,在主仓库中显示出了旁仓库的分支。现在,主仓库就同时把旁仓库的分支。在主仓库读取旁仓库的分支目录。Windows 10 教育版。

2023-06-19 04:02:32 1441

原创 解决Centos安装时找不到磁盘:未选择任何磁盘(no diks selected),本地标准磁盘为空

刚开始,笔者还以为是新买电脑预置的 Windows 11 占用了原磁盘的空间,所以导致无可用空间,但后面又刻录了一个 Windows 10 的 U 盘重装引导程序,把原 Windows 11 的磁盘占用全部删除还原了,结果发现在 CentOS 8 的引导程序中仍然没显示任何磁盘。笔者在使用 U 盘刻录 CentOS 8 镜像之后,准备在新电脑安装 CentOS 8 时,却发现了一个奇怪的事情。笔者新买的电脑是 DELL 的,所以预置的磁盘读取方式是。的磁盘,因此出现了前述的问题。的磁盘的,它只支持读取。

2023-06-13 22:41:29 7833

原创 解决 Android Studio 输入点号.后无任何代码提示的问题

但是,笔者不断清除 Android Studio 的缓存,以及反复删除 Android Studio 在用户目录下的各种缓存文件,然后又反复卸载 Android Studio,接着又下载其它版本的 Android Studio,终于发现了原因所在。(英文的句号)后面没有任何 Android Studio 自带的代码提示,但是在其它情况下却有一定几率有代码提示,而且这个时候的代码提示是有时候有,有时候没有。如果这个类没有继承自安卓的类,纯粹是自己自定义的类,代码提示就会有。笔者终于下定决心来解决这个问题。

2023-06-12 23:01:06 1532 4

原创 解决安卓RecyclerView的列表项TextView无法文本选中TextView does not support text selection. Selection cancelled

如果一个含 RecyclerView 的 Activity A 启动了另一个 Activity B,然后再返回到原来那个 Activity A 时,这个 Activity A 中 RecyclerView 中的 TextView 会突然变得无法进行文本选中(RecyclerView 移动滑条时新出现的 TextView 除外)。如果在 RecyclerView 中使用 TextView(或 EditText),则这个 TextView 在某些条件下会突然变得不能文本选中。原来,这是一个安卓已知的 bug。

2023-06-11 20:24:57 406

原创 解决CentOS8使用yum安装rpm报错为仓库appstream下载元数据失败Cannot prepare internal mirrorlist No URLs in mirrorlist

解析安装包依赖关系时需要联网,而在 2022年1月31日,CentOS团队从官方镜像中删除了所有 CentOS 8 的软件包。CentOS 8 已于2021年12月31日到期,但这些软件包在官方镜像上保留了一段时间。可以使用阿里云镜像。为此,需要先删除 CentOS 8 中的原镜像。最近,笔者在新服务器中安装 MySQL 时,却发生了报错。现在就可以下载阿里云镜像了。使用如下命令下载阿里云镜像。因此,CentOS 8 原镜像不可用。中,删除的方法有很多,这里只举一例。就不会出现前述的报错了。

2023-06-08 23:33:52 4458 2

原创 回调、钩子、句柄的区别

可以看出,虽然“钩子程序”是依赖“圆环程序”的,但“圆环程序”的设计时间与“钩子程序”相对独立,是可以晚于“钩子程序”的。在编程中,这里的钩子相当于一个第三方的黑盒,圆环相当于一个对方指定的要实现的接口,只要自己编写的程序遵守了对方的规范并实现了这个接口,就可以在不需要知道和改动黑盒内部结构的情况下让该黑盒使用自己。因此,广义的钩子不仅包括上面介绍的钩子,还包括一些类中预设的布尔函数,比方说,可以对某一系列的类中都设置一个布尔函数,然后用该布尔函数的返回值来决定程序走向,则该布尔函数就是一个广义的钩子。

2023-06-04 03:44:12 772

原创 代理、委托、打桩的区别

在上面的代码中,传递给方法 increment 的闭包就是一个委托,而方法 increment 就是一个被委托的方法,负责调用传入的委托。代理类低耦合依赖被代理类,但被代理类自身完全不需要代理类,它不在乎以后是否被代理。代理在被使用时,使用方无法区分代理类与被代理类,原因是它们的接口相同。代理(proxy):被代理类写好一套 API 的实现对外开放使用,代理类在被代理类的 API 的基础上再封装一层,形成一套与被代理类。委托与代理非常相似,它们相似之处在于,委托类类似于被代理类,代理类类似委托调用方。

2023-05-15 19:32:22 769

原创 对于 Git 每一次提交的时间信息,什么是作者日期和提交者日期

对于 Git 的每一次提交,在 TortoiseGit 和 IntelliJ IDEA 都可以看到这次提交的时间。但很多人不知道的是,Git 实际上对每一个提交的时间分为两个:作者日期和提交者日期。作者日期(author date):这指的是最开始提交时,所产生的提交文件上的日期提交者日期(committer date):这指的是对这个提交最后一次操作的日期这有点类似于操作系统中文件的创建时间与修改时间。当使用 Git 进行一次提交时,这次提交的时间就会变成作者日期。

2023-05-09 01:39:55 2452 1

原创 安卓中如何获取状态栏和标题栏的高度

指的是应用实际显示的面积。它不包含状态栏,但包含标题栏。而且,这个值是会随应用显示的面积的改变而改变的。比如,当文本框需要输入时,如果弹出了输入法,则。指的是整个屏幕的尺寸。这个尺寸通常是不会变的,且就是手机厂商对外公布的手机屏幕大小数据。它包含状态栏、标题栏和内容区域。安卓的屏幕显示区域分为三个嵌套的部分,依次为。它不包含状态栏、标题栏。下面给出求这几个尺寸的方法。的高度值会减少输入法的高度。

2023-05-08 04:02:08 658

原创 Gradle 模块依赖中,使用 implementation 与 api 的区别

声明的依赖项表示该模块将向其依赖的其他模块公开此依赖项的 API。这意味着其他模块可以使用该依赖项提供的所有公共类和方法,以及该依赖项的传递依赖项提供的所有公共类和方法。声明的依赖项表示该模块将不向其依赖的其他模块公开此依赖项的 API。这意味着该依赖项只对该模块本身可见,并且不会被传递到依赖该模块的其他模块。换句话说**,如果想令本模块能传递性地获得依赖模块的依赖,那么应该在依赖模块的相应依赖中使用关键字。如果项目中有模块 A、B、C、D,且 A 依赖 B、B 依赖 C、C 依赖 D。

2023-05-05 01:05:28 1728

原创 安卓中如何获取输入法的高度

如果在当前视图使用了 RecyclerView,则在键盘弹出之后,不是正好出现在光标的下面,而是出现在整个屏幕的下面。但如果没有使用 RecyclerView,则在键盘弹出之后,如果遮住了文本框,会正好出现在光标的下面。在键盘弹出之后,如果键盘会遮住触发键盘的文本框,则系统会将此应用界面向上推动,直到正好能显示出这个文本框。具体来说,其纵坐标都会减少界面向上移动的距离,这个距离最大可为键盘的高度。在键盘弹出之后,计算应用尺寸(不含状态栏)的大小时,系统的 API 会减去键盘的高度。

2023-05-04 04:31:52 1480

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除