十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关Android 开发中怎么实现弹出软键盘,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联建站是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都做网站、成都网站设计、成都外贸网站建设、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
具体方法如下:
//1、此layout作为最外层的layout; //2、设置需要调整的view: setAdjustView(View view); //3、如果需要控制输入框的显示与隐藏,可以实现OnInputViewVisibleListener接口; public class SoftInputAdjustLayout extends RelativeLayout { private static final String TAG = SoftInputAdjustLayout.class.getSimpleName(); private View adjustView; public SoftInputAdjustLayout(Context context) { this(context, null); } public SoftInputAdjustLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SoftInputAdjustLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { try { Rect r = new Rect(); getWindowVisibleDisplayFrame(r); int heightDiff = getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { if (onInputViewVisibleListener != null) { onInputViewVisibleListener.onShowInputView(); } } else { if (onInputViewVisibleListener != null) { onInputViewVisibleListener.onHideInputView(); } } } catch (Exception e) { e.printStackTrace(); } } }); } /** * 需要调整的view * * @param adjustView */ public void setAdjustView(View adjustView) { this.adjustView = adjustView; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (adjustView != null) { Rect rect = new Rect(); getWindowVisibleDisplayFrame(rect); int totalHeight = getHeight(); int nowHeight = rect.bottom - rect.top; int keyBoardHeight = totalHeight - nowHeight; if (keyBoardHeight > totalHeight / 4) { super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(totalHeight, MeasureSpec.EXACTLY)); LayoutParams params = (LayoutParams) adjustView.getLayoutParams(); params.bottomMargin = keyBoardHeight; } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); LayoutParams params = (LayoutParams) adjustView.getLayoutParams(); params.bottomMargin = 0; } } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } private OnInputViewVisibleListener onInputViewVisibleListener; public void setOnInputViewVisibleListener(OnInputViewVisibleListener listener) { onInputViewVisibleListener = listener; } public interface OnInputViewVisibleListener { void onShowInputView(); void onHideInputView(); } }
备注:
全屏模式:
1、通过style或者setFlags(…)来设置全屏;
2、AndroidManifest.xml中activity设置:android:windowSoftInputMode=”adjustResize”;
3、此layout必须作为布局的最外层layout;
4、一定要在布局中添加一个view,如下:
5、通过setAdjustView(View view)来设置需要调整的view;
6、在全屏模式下,输入框开始是未显示的,直到弹出软键盘,才会显示输入框。因为如果输入框一开始就显示,那软键盘就会根据输入框来弹出,且输入框在底部,那就可能造成把整个view顶上去。所以这时我们应该实现OnInputViewVisibleListener这个接口来控制输入框的显示与隐藏。
非全屏模式
1、AndroidManifest.xml中activity设置:android:windowSoftInputMode=”adjustResize
”;
2、此layout必须作为布局的最外层layout;
3、通过setAdjustView(View view)
来设置需要调整的view;
4、如果需要控制输入框的显示与隐藏,就实现OnInputViewVisibleListener这个接口。
关于Android 开发中怎么实现弹出软键盘就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。