這篇文章將為大家詳細(xì)講解有關(guān)Android 開(kāi)發(fā)中怎么實(shí)現(xiàn)彈出軟鍵盤(pán),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 創(chuàng)新互聯(lián)建站是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!
具體方法如下:
//1、此layout作為最外層的layout; //2、設(shè)置需要調(diào)整的view: setAdjustView(View view); //3、如果需要控制輸入框的顯示與隱藏,可以實(shí)現(xiàn)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(); } } }); } /** * 需要調(diào)整的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、通過(guò)style或者setFlags(…)來(lái)設(shè)置全屏;
2、AndroidManifest.xml中activity設(shè)置:android:windowSoftInputMode=”adjustResize”;
3、此layout必須作為布局的最外層layout;
4、一定要在布局中添加一個(gè)view,如下:
5、通過(guò)setAdjustView(View view)來(lái)設(shè)置需要調(diào)整的view;
6、在全屏模式下,輸入框開(kāi)始是未顯示的,直到彈出軟鍵盤(pán),才會(huì)顯示輸入框。因?yàn)槿绻斎肟蛞婚_(kāi)始就顯示,那軟鍵盤(pán)就會(huì)根據(jù)輸入框來(lái)彈出,且輸入框在底部,那就可能造成把整個(gè)view頂上去。所以這時(shí)我們應(yīng)該實(shí)現(xiàn)OnInputViewVisibleListener這個(gè)接口來(lái)控制輸入框的顯示與隱藏。
非全屏模式
1、AndroidManifest.xml中activity設(shè)置:android:windowSoftInputMode=”adjustResize
”;
2、此layout必須作為布局的最外層layout;
3、通過(guò)setAdjustView(View view)
來(lái)設(shè)置需要調(diào)整的view;
4、如果需要控制輸入框的顯示與隱藏,就實(shí)現(xiàn)OnInputViewVisibleListener這個(gè)接口。
關(guān)于Android 開(kāi)發(fā)中怎么實(shí)現(xiàn)彈出軟鍵盤(pán)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。