<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".feature.webview.WebViewActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/header_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:paddingLeft="@dimen/dp_14"
android:paddingRight="@dimen/dp_14">
<ImageView
android:id="@+id/img_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:contentDescription="@string/defaultContentDescription"
android:padding="@dimen/dp_14"
android:src="@drawable/icn_back"
android:visibility="gone" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:contentDescription="@string/defaultContentDescription"
android:src="@drawable/icn_hundred_for_good" />
<ImageView
android:id="@+id/img_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:contentDescription="@string/defaultContentDescription"
android:padding="@dimen/dp_5"
android:src="@drawable/icn_profile"
android:visibility="gone" />
</RelativeLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_14"
android:background="@color/white">
</View>
<RelativeLayout
android:id="@+id/rl_footer"
android:layout_width="match_parent"
android:layout_height="@dimen/header_height"
android:background="@color/colorPrimary"
android:paddingLeft="@dimen/dp_60"
android:paddingRight="@dimen/dp_60"
android:visibility="gone">
<LinearLayout
android:id="@+id/layout_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/img_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/defaultContentDescription"
android:src="@drawable/icn_home" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/source_sans_pro_regular"
android:lineSpacingMultiplier="1.20"
android:paddingTop="@dimen/dp_3"
android:text="@string/home"
android:textColor="@color/white"
android:textSize="@dimen/sp_10" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_record_act"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical"
android:paddingEnd="@dimen/dp_3">
<ImageView
android:id="@+id/img_record_act"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/defaultContentDescription"
android:src="@drawable/icn_setting" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/source_sans_pro_regular"
android:lineSpacingMultiplier="1.20"
android:paddingTop="@dimen/dp_3"
android:text="@string/record_act"
android:textColor="@color/white"
android:textSize="@dimen/sp_10" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_dashboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/img_dashboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/defaultContentDescription"
android:src="@drawable/icn_dashboard" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/source_sans_pro_regular"
android:lineSpacingMultiplier="1.20"
android:paddingTop="@dimen/dp_3"
android:text="@string/dashboard"
android:textColor="@color/white"
android:textSize="@dimen/sp_10" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
我的布局的底部有一个webview和一个页脚布局。
在webview内的任何字段中输入文本时,页脚布局会显示在键盘顶部。我尝试在清单文件中设置 android:windowSoftInputMode =“ somevalue” 。我删除了 android:layout_weight 参数,并对高度进行了硬编码。在这两种情况下,它都可以正常工作,并且页脚不会出现在小键盘上,但是会引起另一个问题,即小键盘现在在Webview的编辑字段上重叠。在应用这些修补程序之前,当键盘可见时,这些字段会自动向上滚动。
如何确保页脚布局保留在底部并在键盘出现时编辑字段以向上滚动?
答案 0 :(得分:1)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/rl_footer" />
<RelativeLayout
android:id="@+id/rl_footer"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:visibility="visible">
<ImageView
android:id="@+id/img_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
<ImageView
android:id="@+id/img_record_act"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/img_dashboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
</RelativeLayout>
</RelativeLayout>
这将是您必须在活动中编写的代码
relativeLayoutScreen.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = relativeLayoutScreen.getRootView().getHeight() - relativeLayoutScreen.getHeight();
if (heightDiff > 100) {
Log.e("MyActivity", "keyboard opened");
relativeLayoutFooter.setVisibility(View.GONE);
} else {
Log.e("MyActivity", "keyboard closed");
relativeLayoutFooter.setVisibility(View.VISIBLE);
}
}
});
我认为这会起作用。 在这个relativeLayoutScreen是父主布局。 和relativeLayoutFooter是页脚布局名称
这是经过测试的代码,可以正常工作。