我需要做一个非常简单的事情 - 找出是否显示了软件键盘.这在Android中可行吗?
当软键盘打开时,我想要滚动视图向下滚动到底部.
为此,我可以使用:fullScroll(View.FOCUS_DOWN);
但是,如何在软键盘打开事件触发后触发该命令?
我有一个小的演示聊天UI应用程序.此应用程序有一个底部导航栏.当键盘出现时我需要隐藏底部导航栏.
正如您在EditText元素中单击时所看到的那样,键盘会出现但底部导航栏仍然可见.我尝试过这种测量方法等方法,但UI元素却像这样闪烁.
当键盘可见时,是否有正确的方法隐藏底部导航栏?
编辑: 在下面的活动中,您可以看到我设置键盘监听器的位置,以便在确定键盘可见时调整UI元素的位置.
这是我的活动代码,使用上面链接中的setKeyboardListener方法并在onCreateView中设置它:
package uk.cal.codename.projectnedry.TeamChatFragment;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.roughike.bottombar.BottomBar;
import java.util.ArrayList;
import …Run Code Online (Sandbox Code Playgroud) 我正试图在Android中检测虚拟键盘高度.
我发现了类似的话题:在Android中获取虚拟键盘的高度
似乎作者找到了一种检测高度的方法:
我找到了一种方法来获得它.在我请求打开虚拟键盘后,我发送了我生成的指针事件.它们的y坐标从设备高度开始减小.
我不明白该怎么做.
我的应用程序设计使我对每个表单视图都有这种布局:视图底部的浮动按钮。我使用的是ConstraintLayout动态地设置按钮的高度总是具有相同的左/右页边距无论屏幕的宽度,所以我最终这个布局:
<ConstraintLayout>
<ScrollView>
<EditText/>
<EditText/>
<!-- ... -->
<ConstraintLayout /> (1)
</ScrollView>
<Button/>
</ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
(1) 底部按钮高度的清晰视图,以便不隐藏滚动视图中将被按钮隐藏的底部视图
基本上,这就是它的样子:
现在我遇到的问题是当我点击底部的编辑文本时,例如这里的第四个:
编辑文本在键盘上向上移动,而不是浮动按钮,它经常被它隐藏。我知道我必须在编辑文本的onFocusChanged()方法中做一些事情,但我不知道是什么......
有很多关于查找显示/隐藏软键盘事件的帖子。我发现自己处于需要根据片段中的软键状态更改图标的情况。
我尝试实现 onMeasure,但无法在片段中覆盖它。是否有一种(相对)无痛的方法可以在我的片段中获得干净的显示/隐藏软键盘事件,或者我应该放弃发货?