以登錄頁面為例:
1.在布局底部放置一個透明的 view_Bottom咕村,通過監(jiān)聽鍵盤彈出修改 view_Bottom的高度實現(xiàn),鍵盤彈出頂起陡鹃,鍵盤消失收回 的效果
<View
android:id="@+id/view_Bottom"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="200dp">
</View>
- 獲取根布局和底部View
View rootView;
View view_Bottom;
view_Bottom = findViewById(R.id.view_Bottom);
rootView=findViewById(R.id.root_View);
- 監(jiān)聽根布局Layout的布局變化,鍵盤彈出修改view_Bottom的高度纤垂,收起也修改view_Bottom的高度
//完美解決鍵盤頂起問題
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int screenHeight = rootView.getRootView().getHeight();
int heightDifference = screenHeight - (r.bottom - r.top);
if(heightDifference>150) params.height=900;
else params.height=600;
view_Bottom.setLayoutParams(params);
// Log.e("Keyboard Size, Size: " ,String.valueOf(heightDifference));
}
});
4.想要不再界面一出現(xiàn)就彈出鍵盤仪糖,完善用戶體驗,只要在根布局里加入,就能完美解決
android:focusable="true"
android:focusableInTouchMode="true"