Android 如何在Web视图中加载新页面时滚动到scrollview的顶部
我在scrollview中设置了一个webview。当我最初向下滚动到屏幕底部并单击WebVIEW中的链接时,页面中可见的加载页面是可见的。如何自动滚动到scrollview的顶部。我在谷歌上搜索过,但没有答案。iOS会自动做到这一点,但android并不像我所看到的那样。如有任何见解,将不胜感激。我设置了一个smoothscroll(0,0),但它会在移动到下一页之前滚动到顶部。也许这就是我能做的。如有其他解决办法,将不胜感激Android 如何在Web视图中加载新页面时滚动到scrollview的顶部,android,webview,Android,Webview,我在scrollview中设置了一个webview。当我最初向下滚动到屏幕底部并单击WebVIEW中的链接时,页面中可见的加载页面是可见的。如何自动滚动到scrollview的顶部。我在谷歌上搜索过,但没有答案。iOS会自动做到这一点,但android并不像我所看到的那样。如有任何见解,将不胜感激。我设置了一个smoothscroll(0,0),但它会在移动到下一页之前滚动到顶部。也许这就是我能做的。如有其他解决办法,将不胜感激 if(isConnectingToInternet()){
if(isConnectingToInternet()){
WebProducts.setVisibility(View.VISIBLE);
TextNoInternet.setVisibility(View.GONE);
WebProducts.getSettings().setLoadWithOverviewMode(true);
WebProducts.getSettings().setUseWideViewPort(true);
WebProducts.getSettings().setSupportZoom(false);
WebProducts.loadUrl("http://www.healthfitnessenergy.com/productpages/products.php");
}
else{
WebProducts.setVisibility(View.GONE);
TextNoInternet.setVisibility(View.VISIBLE);
}
WebProducts.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
ScrollView1.smoothScrollTo(0,0);
return false;
}
});
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/products_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="8dp"
android:gravity="center_vertical"
android:text="@string/product_qs2_products"
style="@style/Bold_Black_20" />
<WebView
android:id="@+id/wvProducts"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:background="@drawable/gradient_background"
android:orientation="vertical" >
</WebView>
<TextView
android:id="@+id/ifnointernet"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingLeft="25dp"
android:gravity="center_vertical"
android:text="Product Menu will be available when cell/wifi service is available"
android:textColor="#333333"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
if(连接到Internet()){
WebProducts.setVisibility(View.VISIBLE);
TextNoInternet.setVisibility(View.GONE);
WebProducts.getSettings().SetLoadWithOverview模式(true);
WebProducts.getSettings().setUseWideViewPort(true);
WebProducts.getSettings().setSupportZoom(false);
WebProducts.loadUrl(“http://www.healthfitnessenergy.com/productpages/products.php");
}
否则{
WebProducts.setVisibility(View.GONE);
TextNoInternet.setVisibility(View.VISIBLE);
}
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
view.loadUrl(url);
ScrollView1.smoothScrollTo(0,0);
返回false;
}
});
将在某些侦听器中“scrollview.pageScroll(View.FOCUS_UP);”帮助您?尝试使用OnPageStarted()
和onPageFinished()
中的方法来完成此操作。基本上删除现有视图
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
webView.setVisibility(View.GONE);
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
webView.setVisibility(View.VISIBLE);
super.onPageFinished(view, url);
}
@Kevin M您的问题可以通过覆盖@Htet Will回答的两个方法onPageStarted和onPageFinished来解决。 你的另一个问题“不确定如何为网页上的按钮建立监听器以便在应用程序中工作”可以通过JS Bridge解决。在ios中,你必须知道JS Bridge的概念,在android中也类似 首先,您必须为javascript界面启用webview
webview.getSettings().setJavaScriptEnabled(true);
第二,制作一个javascript界面
@Keep
private class JavaScriptInterface {
private JavaScriptInterface() {
}
@JavascriptInterface
public void methodName(){
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//do what you want in your java class
}
});
}
}
第三-将JavaScriptInterface分配给webview
webView.addJavascriptInterface(new JavaScriptInterface(), "jsSolutionInterface");
第四个-在html按钮中添加一个单击方法,比如open()。在名为open的方法中,可以调用javascript接口方法。js方法示例:
function open()
{jsSolutionInterface.methodName();}
通过这种方式,您可以连接js和java方法。希望这能对您有所帮助。上面列出的代码是我必须处理webview以保持应用程序内部链接的代码。不确定如何为网页上的按钮建立监听器,以便在应用程序内部工作。如果在WebViewClient的“onPageFinished”中设置监听器,该怎么办?当页面加载完毕时,将滚动显示。还是我没有达到你的目标?