android 设置键盘按钮为发送按钮并监听 及 键盘显示与隐藏 监听
16lz
2021-01-23
android:imeOptions="actionSend" // 起关键作用
messageInput.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEND) { sendMessage(Body_type.txt, ""); return true; } return false; } });
键盘显示与隐藏 监听
public class KeyboardStatusDetector { KeyboardVisibilityListener visibilityListener; boolean keyboardVisible = false; public void registerFragment(Fragment f) { registerView(f.getView()); } public KeyboardStatusDetector registerActivity(Activity a) { return registerView(a.getWindow().getDecorView().findViewById(android.R.id.content)); } public KeyboardStatusDetector registerView(final View v) { v.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); v.getWindowVisibleDisplayFrame(r); int heightDiff = v.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... /** Check this variable to debounce layout events */ if (!keyboardVisible) { keyboardVisible = true; if (visibilityListener != null) visibilityListener.onVisibilityChanged(true); } } else { if (keyboardVisible) { keyboardVisible = false; if (visibilityListener != null) visibilityListener.onVisibilityChanged(false); } } } }); return this; } public KeyboardStatusDetector setVisibilityListener(KeyboardVisibilityListener listener) { visibilityListener = listener; return this; } public static interface KeyboardVisibilityListener { public void onVisibilityChanged(boolean keyboardVisible); }}
// 使用:
View rootView = getWindow().getDecorView().findViewById(android.R.id.content); new KeyboardStatusDetector() .registerView(rootView) //or register to an activity .setVisibilityListener(new KeyboardStatusDetector.KeyboardVisibilityListener() { @Override public void onVisibilityChanged(boolean keyboardVisible) { if (keyboardVisible) { // 显示键盘 } } });
更多相关文章
- Android 软键盘之 windowSoftInputMode 分析
- Android的RelativeLayout的view的layout_marginBottom不起作用
- android 聊天用RecyclerView获取键盘高度和消息自动显示在最底部
- Android 键盘布局总结
- Android开发EditText不自动弹出键盘
- 关于EditText 焦点 及 软键盘弹出引起不适 的几点
- Android中软键盘弹出时底部菜单上移问题
- Android中关于软键盘的一些设置
- Android EditText通过imeOptions属性控制软键盘的回车键变化:回车