我有一个WebView
和一个我希望在WebView
下面添加的原生自定义视图。我已经尝试将WebView
包裹在ScrollView
内,虽然这正是我想要的,但滚动性能确实很滞后,如果用户甩动滚动点击屏幕并不会停止像它应该的那样投掷。
我想的另一种方法是将WebView
充气到包装FrameLayout
,我的页脚视图位于WebView
之上,然后以某种方式延伸WebView
高度为了适应页脚大小,将页脚视图推到WebView
高度的末尾,然后监视WebView
的滚动以移动页脚。
我已经设置了基类,我的问题是扩展WebView
中的可滚动内容,然后将页脚推到WebView
内容的底部;主要问题是WebView
不是典型的android视图,页面内容是异步加载的(因此内容大小会发生变化)。
如何扩展WebView
的可滚动内容?如何将原生页脚设置为WebView
内容以下?
编辑:
我实际上并没有使用xml,视图是用这样的代码构建的:
public class WebViewWithFooter extends FrameLayout {
private ObservableWebView mWebView;//webview with scroll methods overridden for access
private FrameLayout mFooterContainer;
public WebViewWithFooter(Context context) {
super(context);
init();
}
public WebViewWithFooter(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public WebViewWithFooter(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public WebViewWithFooter(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init() {
FrameLayout.LayoutParams footerParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
FrameLayout.LayoutParams webviewParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
mWebView = new ObservableWebView(getContext());
mFooterContainer = new FrameLayout(getContext());
addView(mWebView, webviewParams);
addView(mFooterContainer, footerParams);
}
}
答案 0 :(得分:5)
在Webview
内部使用页脚(LinearLayout
,RelativeLayout
等)包裹一个简单的ObservableScrollView
,而不是ObservableWebView
。我无法详细说明,因为您还没有添加任何布局文件。
修改强>:
<强> Activity.xml 强>:
<LinearLayout
android:layout_width="match parent"
android:layout_height="match parent"
android:orientation="vertical">
<com.github.ksoichiro.android.observablescrollview.ObservableScrollView
android:id="@+id/viewObj"
android:layout_width="match parent"
android:layout_height="wrap_content">
<!-- Webview and footer programatically added here -->
</com.github.ksoichiro.android.observablescrollview.ObservableScrollView
</LinearLayout>
<强> Activity.java 强>:
FrameLayout.LayoutParams footerParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
FrameLayout.LayoutParams webviewParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
mWebView = new WebView(getContext());
mFooterContainer = new FrameLayout(getContext());
mObservableScrollView = (ObservableScrollView) findViewbyId(R.id.viewObj);
mObservableScrollView.addView(mWebView, webviewParams);
mObservableScrollView.addView(mFooterContainer, footerParams);
答案 1 :(得分:3)
我使用布局xml代码实现了这一点,如下所示:
<TextView
android:id="@+id/about_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceMedium"
/>
<TextView
android:id="@+id/readme_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/changelog_text" />
<WebView
android:id="@+id/readme_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbars="vertical" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="0.5" />
<cu.tellistico.ImageButtonText
android:id="@+id/btn_gift"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:contentDescription="@string/btn_donate_info"
custom:buttonBackground="@drawable/states_orange"
android:src="@drawable/ic_gift"
android:text="Donar"
android:textColor="@color/text_orange" />
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="0.5"/>
</LinearLayout>
</LinearLayout>
在蓝色文本下方有一个可滚动的Webview和一个按钮页脚。这对你有效吗?
答案 2 :(得分:0)
如果我错了,请纠正我,但基本上你想在页面底部看到你的页脚视图,你的webview会占用剩下的所有空间吗?
为什么不将您的页脚视图放在RelativeLayout中并且alignParentBottom设置为true,然后让WebView位于自定义视图上方,并将高度设置为matchParent?