android 軟鍵盤遮擋布局

2021-07-30 02:44:16 字數 2657 閱讀 8464

上次說有時間將要寫一寫軟鍵盤遮擋布局,在我實際開發中所踩過的坑.這裡我將寫下對於軟鍵盤遮擋布局的問題記錄我的心得.

有些情況在布局檔案中會使用edittext這個控制項,所以在對edittext輸入內容的時候會呼叫軟鍵盤將其彈出,這時將有可能遮擋輸

入的位置,所以需要想辦法將布局往上頂,讓軟鍵盤不遮擋控制項.

1.當布局檔案中沒有webview解決方案:

可以在androidmainfest中講對應的activity配置

android:windowsoftinputmode="adjustresize" 這個屬性就可
如果在實際的開發中要取消edittext的焦點可以在其父控制項中新增
android:focusable="true"android:focusableintouchmode="true"
這兩個屬性即可,從而可以通過軟鍵盤的顯示與隱藏來對edittext焦點的控制
edittext.

getviewtreeobserver

().addongloballayoutlistener

(newviewtreeobserver.ongloballayoutlistener

()

else

}});

2 如果配置該屬性不能解決問題的時候可以使用如下的**解決問題:

public classkeyboardtouiup

privateview

mchildofcontent;

private intusableheightprevious;

privateframelayout.layoutparams

framelayoutparams;

privatekeyboardtouiup(activity activity)

});framelayoutparams= (framelayout.layoutparams)mchildofcontent.getlayoutparams();

}private voidpossiblyresizechildofcontent()else

mchildofcontent.requestlayout();

usableheightprevious= usableheightnow;

}}

private intcomputeusableheight() 

}

只需要在布局遮擋的activity的oncreat()方法中的setcontentview()的後面新增keyboardtouiup.assistactivity(this);
方法即可.

備註:computeusableheight() 方法返回值根據fitsystemwindows的設定值來決定,如果布局中fitssystemwindows="false",

return r.bottom; 如果fitssystemwindows="true", return (r.bottom - r.top);

3.如果是上面的方法都解決不了可以使用最後一種方法

/***

@param

rootview

跟布局*

@param

bottomview

最後要顯示的控制項

注意使用該方法的時候,在布局中需要將父布局改為scrollview才能使用

*/

public static voidaddlayoutlistener(finalview rootview,finalview bottomview)

}else

}});

}

下次將寫android7.0獲取手機照相機拍攝功能及將拍攝的**加入相簿和獲取相簿中的所遇到的坑,希望篇文章對你有所幫助謝謝!!!!!!!

Android中開啟軟鍵盤布局改變

android windowsoftinputmode activity 的主視窗與包含螢幕軟鍵盤的視窗的互動方式。該屬性的設定影響兩個方面 該設定必須是下表所列的值之一,或者是乙個 state.值加上乙個 adjust.值的組合。在任一組中設定多個值 例如,多個 state.值 都會產生未定義結果...

android遮蔽軟鍵盤

android name mainactivity android screenorientation landscape android windowsoftinputmode adjustpan statehidden android configchanges orientation keyb...

Android 軟鍵盤互動

方法很簡單,在edittext中設定兩個屬性 android imeoptions actionsearch android singleline true 這兩個屬性必須一起設定,不然不會生效。在沒有設定imeoptions屬性的情況下,設定了inputtype或者singleline true ...