修复键盘打开时父级 Activity 中的按钮位置
Fix Button position in Parent Activity when keyboard is open
我们在 Activity.Activity 中使用 Fragment 包含提交按钮,Fragment 包含表单输入。
现在,当我们打开键盘时,activity 按钮会自动出现在 keyboard.How 上方,我们能否粘住该按钮并向上移动片段部分。
我们只想把那个更新按钮贴在最后。
你必须试试这个代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SplashActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
我添加了这段代码,它对我有用。此代码将在键盘打开时隐藏按钮并在关闭时再次显示它。
parentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 100) { // if more than 100 pixels, its
//Hide Show Key board
view_one.setVisibility(View.GONE);
view_two.setVisibility(View.GONE);
}else{
//ok now we know the keyboard is down...
view_one.setVisibility(View.VISIBLE);
view_two.setVisibility(View.VISIBLE);
}
}
});
我不知道我是否理解正确,但您尝试将此代码放入您的 manifest 文件中 activity 标签内:
android:windowSoftInputMode="adjustPan"
并将此代码也放入您的按钮标签中:
android:layout_alignParentBottom="true"
我们在 Activity.Activity 中使用 Fragment 包含提交按钮,Fragment 包含表单输入。
现在,当我们打开键盘时,activity 按钮会自动出现在 keyboard.How 上方,我们能否粘住该按钮并向上移动片段部分。
我们只想把那个更新按钮贴在最后。
你必须试试这个代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SplashActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
我添加了这段代码,它对我有用。此代码将在键盘打开时隐藏按钮并在关闭时再次显示它。
parentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its //Hide Show Key board view_one.setVisibility(View.GONE); view_two.setVisibility(View.GONE); }else{ //ok now we know the keyboard is down... view_one.setVisibility(View.VISIBLE); view_two.setVisibility(View.VISIBLE); } } });
我不知道我是否理解正确,但您尝试将此代码放入您的 manifest 文件中 activity 标签内:
android:windowSoftInputMode="adjustPan"
并将此代码也放入您的按钮标签中:
android:layout_alignParentBottom="true"