У меня есть WebView
и собственное собственное представление, которое я хочу добавить под WebView
. Я пытался обернуть WebView
внутри ScrollView
, и хотя это делает именно то, что я хочу, производительность прокрутки действительно отстает, и если пользователь прокручивает прокрутку, касаясь экрана, не останавливает прокрутку, как должно.
Другой подход, о котором я думал, заключался в том, чтобы раздуть WebView
в оболочку FrameLayout
с моим представлением нижнего колонтитула поверх WebView
, затем каким-то образом увеличить высоту WebView
, чтобы приспособить размер нижнего колонтитула, подтолкнуть представление нижнего колонтитула к концу высоты WebView
s, а затем следите за прокруткой WebView
, чтобы перемещать нижний колонтитул вместе с ним.
Я настроил базовый класс, моя проблема заключается в расширении прокручиваемого содержимого в WebView
, а затем в перемещении нижнего колонтитула в нижнюю часть содержимого WebView
s; основная проблема заключается в том, что 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);
}
}