Android修行手册 - EditText光标和小键盘控制

1,283 阅读3分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战」。

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

欢迎关注公众号【空名先生】获取更多资源和交流!

👉前提

这是小空坚持写的Android新手向系列,欢迎品尝。

大佬(×)

新手(√)

👉实践过程

😜小键盘控制

一旦涉及输入框,那么小键盘一定少不了,在业务开发的过程中会针对小键盘隐藏显示等做出对应的措施,或者自定义键盘的业务功能都需要该技术。

在AndroidMinifest.xml的【activity】中设置属性【windowSoftInputMode】即可。

image.png

stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置,也就是小键盘的默认值,当输入组件EditText获取焦点的时候才会弹出
stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示,举例,该页面A是隐藏键盘,跳转页面B后,键盘也是隐藏的。
stateHidden:用户选择activity时,软键盘总是被隐藏
stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
stateVisible:软键盘通常是可见的
stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态,不管有没有输入框。
adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示,并且会调整布局进而使输入内容始终可见
adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
adjustPan:当前窗口的内容将自动移动以便当前焦点控件不被键盘覆盖和用户能总是看到输入内容的部分。 上面的属性使用过程中同样不是唯一性,可联合使用。

android:windowSoftInputMode="adjustResize|stateAlwaysHidden"

😜光标

默认光标位置是在最后显示的,这也是对用户较好的体验形式。但同时官方仍然给了我们更多的自由空间。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_edit);
    //随着Android的发展,现在findViewById已经淡出了人们的视线
    EditText testEditText = findViewById(R.id.testEditText);
    //设置光标的显示位置,一般默认即可
    testEditText.setSelection(0);
    //设置光标是否可见
    testEditText.setCursorVisible(false);
    //获取当前光标的前后位置
    testEditText.getSelectionStart();
    testEditText.getSelectionEnd();
}

😜明文密文

很多App业务中都需要密码输入,有的产品会在密码旁边有个【眼睛】的图标,展示可展示密码明文或回复密文。这都是程序中用代码控制的。

EditText testEditText = findViewById(R.id.testEditText);

//显示明文密码

testEditText.setTransformationMethod(new HideReturnsTransformationMethod());

//隐藏密码 就是密文显示 都是 *** 号

testEditText.setTransformationMethod(new PasswordTransformationMethod());

👉其他

📢作者:小空和小芝中的小空

📢转载说明-务必注明来源:芝麻粒儿 的个人主页 - 专栏 - 掘金 (juejin.cn)

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。