gpt4 book ai didi

android - 显示安卓 :hint only in Extract UI mode

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:58 30 4
gpt4 key购买 nike

我有一个 Android 布局中的 EditTexts 列表。每个都标有一个 TextView,因此在纵向模式下不需要提示,提示甚至是多余的。然而,在横向模式下,许多人将键盘配置为全屏并隐藏应用程序,直到隐藏键盘并将输入注入(inject)所选 View :

SwiftKey keyboard in landscape fullscreen extract ui mode

如果您有一个用于输入的 EditText 字段,这可能没问题,但如果您有一个列表,则没有人会在输入之前记住六个 TextView 标签。

如何设置仅在键盘处于提取 ui 模式时出现的提示 - 无论是横向还是纵向?

最佳答案

我设法使用 InputConnectionWrapper 解决了这个问题,它有一个用于进入全屏模式的显式回调。

/**
* [InputConnection] wrapper which applies hint text to
* the IME when entering fullscreen mode.
*/
class FullscreenHintInputConnection(
delegate: InputConnection,
private val editText: EditText,
private val hintText: CharSequence
) : InputConnectionWrapper(delegate, false) {

override fun reportFullscreenMode(enabled: Boolean): Boolean {
if (enabled) {
editText.hint = hintText
} else {
editText.hint = null
}
return super.reportFullscreenMode(enabled)
}
}

在 EditText 子类中:

override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
val connection = super.onCreateInputConnection(outAttrs)
return FullscreenHintInputConnection(connection, this, "Lorem ipsum")
}

虽然此解决方案有效,但值得注意的是 AppCompat 设法更优雅地完成此操作。该库修改了传递给 onCreateInputConnection 的 EditorInfo 参数,完全避免了 InputConnectionWrapper 子类。

AppCompatEditText.java

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
return AppCompatHintHelper.onCreateInputConnection(
super.onCreateInputConnection(outAttrs),
outAttrs,
this
);
}

AppCompatHintHelper.java

class AppCompatHintHelper {
static InputConnection onCreateInputConnection(InputConnection ic, EditorInfo outAttrs,
View view) {
if (ic != null && outAttrs.hintText == null) {
ViewParent parent = view.getParent();
while (parent instanceof View) {
if (parent instanceof WithHint) {
outAttrs.hintText = ((WithHint) parent).getHint();
break;
}
parent = parent.getParent();
}
}
return ic;
}
}

这用于将 TextInputLayout 提供的提示应用于基础 TextInputEditText。其中一些 API 仅限于库,因此您需要将它们复制到您自己的项目中。但不幸的是,到目前为止,这种技术对我不起作用,提示仍然是空白。

关于android - 显示安卓 :hint only in Extract UI mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38467803/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com