数据加载后如何防止滚动浏览到webview?
所以我有一个迷人的问题。 尽pipe事实上我没有手动或以编程方式滚动我的视图,我的WebView被自动滚动到其中的数据加载后。
viewpager中有一个片段。 当我第一次加载传呼机,它按预期工作,一切都显示。 但是,一旦我“翻页”的数据加载和WebViewpopup到页面的顶部,隐藏其上的意见,这是不可取的。
有谁知道如何防止这种情况发生?
我的布局看起来像这样:
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/article_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginBottom="2dp" android:text="Some Title" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/article_title" android:textStyle="bold" /> <LinearLayout android:id="@+id/LL_Seperator" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:background="@color/text" android:orientation="horizontal" > </LinearLayout> <WebView android:id="@+id/article_content" android:layout_width="match_parent" android:layout_marginRight="10dp" android:layout_marginLeft="10dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/article_link" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:layout_marginRight="10dp" android:layout_marginLeft="10dp" android:text="View Full Article" android:textColor="@color/article_title" android:textStyle="bold" /> </LinearLayout> </ScrollView>
我也没有把重点放在任何事情上。 默认情况下,它似乎自动滚动到加载后的WebView。 我如何防止这种情况?
您可以简单地将其添加到您的LinearLayout:android:focusableInTouchMode =“true”。 这个对我有用。
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true" android:orientation="vertical" >
我有同样的问题,经过几个小时的尝试几个想法,最后为我工作的只是添加descendantFocusability
属性的ScrollView的包含LinearLayout,值blockDescendants
。 在你的情况下:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:descendantFocusability="blocksDescendants" >
从那以后没有问题再次发生:)
你应该创build新的类扩展ScrollView,然后覆盖requestChildFocus:
public class MyScrollView extends ScrollView { @Override public void requestChildFocus(View child, View focused) { if (focused instanceof WebView ) return; super.requestChildFocus(child, focused); } }
然后在你的xml布局中使用:
<MyScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" >
这对我行得通。 ScrollView将不会自动滚动到WebView。
在主布局中添加这些行解决了这个问题
android:descendantFocusability="blocksDescendants"
喜欢这个:
<com.ya.test.view.MyScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="beforeDescendants" android:focusable="true" android:focusableInTouchMode="true" >
也许有人遇到同样的问题,所以我会帮忙的。
我试图把我的主ScrollView中的android:descendantFocusability =“beforeDescendants”如下:
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="beforeDescendants"> /*my linearlayout or whatever to hold the views */
它不工作,所以我不得不使一个RelativeLayout ScrollView的父亲,并将android:descendantFocusability =“beforeDescendants”放置在父亲以及。
所以我解决了这个问题:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> /*my linearlayout or whatever to hold the views */
我不得不使用MyScrollView的完全限定名称,否则我得到了一个膨胀exception。
<com.mypackagename.MyScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" >