gpt4 book ai didi

java - 登录表单: Keyboard hides on button click,,但点击edittext后不再显示

转载 作者:行者123 更新时间:2023-12-01 17:46:41 25 4
gpt4 key购买 nike

我有一个带有编辑文本和登录按钮(连接)的登录表单。当用户单击编辑文本时,键盘会打开,当用户单击登录按钮(连接)时,键盘会消失。问题是,如果用户在单击登录按钮后单击编辑文本,键盘会显示一秒钟,然后消失。使用 rootview 来计算键盘是否显示,因为根据 stackoverflow,这似乎是最简单的方法。我该如何制作才能在单击按钮后显示键盘?

点击监听器

boolean clicked=false;

connect.setOnClickListener(v -> {


clicked=true;
keyboard();

});

键盘方法

    void keyboard(){

InputMethodManager inputManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);

final View activityRootView = findViewById(R.id.wrap);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
activityRootView.getWindowVisibleDisplayFrame(r);

if (clicked) {
int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 0.25 * activityRootView.getRootView().getHeight()) {
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
});


}

最佳答案

每次布局更新时都会调用您的 onGlobalLayout 监听器,如果单击按钮一次,这将导致键盘在每次布局更新后消失我真的不明白你想在那里做什么以及为什么要进行此检查

if (heightDiff > 0.25 * activityRootView.getRootView().getHeight())

您可以直接在 ButtonClickListener 中关闭键盘

connect.setOnClickListener(v -> { 
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); });

关于java - 登录表单: Keyboard hides on button click,,但点击edittext后不再显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60856053/

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