我创建了一个包含一个地图,图像和其他文本视图的活动,并为其添加了“scrollview”标签...但是在活动开始后它会自动滚动到页面的末尾...请告诉我为什么会发生这种情况以及如何阻止它结束,以便我可以自己滚动。
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:orientation="vertical"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.radikallab.earch.DetailsActivity"
android:background="@drawable/background10">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="Title"
android:textStyle="italic"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/background4"
android:id="@+id/iv"/>
<TextView
android:id="@+id/rat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="Title"
android:textStyle="italic"/>
<TextView
android:id="@+id/addr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="17sp"
android:text="Title"
android:textStyle="italic"/>
<WebView
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_marginTop="10dp"
android:id="@+id/webView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
答案 0 :(得分:51)
我也面临同样的场景,但是将descendantFocusability属性添加到包含LinearLayout的ScrollView,解决了我的问题。
android:descendantFocusability="blocksDescendants"
您可以将其用作:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >
答案 1 :(得分:4)
在线性布局中设置android:focusableInTouchMode="true"
:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:focusableInTouchMode="true"
android:layout_height="match_parent">
答案 2 :(得分:1)
实际上我找到了一个简单的答案,只需在相关的java文件中添加“setfocusable(false)”.....在这种情况下,“webview”首先将其滚动到那里....所以添加“webview。 setfocusable(false)“在关联的webview java类中。
答案 3 :(得分:1)
如果您确实想使用Java手动设置它; 试试这个-确实有效: 使用FOCUS_UP滚动到顶部,使用FOCUS_DOWN滚动到底部。
scrollView.post(new Runnable() {
public void run() {
scrollView.fullScroll(View.FOCUS_UP);
}
答案 4 :(得分:0)
实际上,如果ScrollView
内的孩子支持滚动,ListView
和WebView
,则会遇到滚动问题。
我找到了一个类似的问题和一些解决方法。它支持垂直滚动,但如果HTML
页面超过WebView
宽度,则不支持水平滚动。
请参阅this以供参考。
答案 5 :(得分:0)
对我有用的是Punit Sharma和FAЯAƸ的答案的组合。
我的问题是另一个可滚动视图(NestedScrollView)内的一个可滚动视图(RecyclerView)-与ScrollView内的WebView相同。
将内部可滚动视图包装在属性为FragmentLayout
的{{1}}内,解决了我的自底滚动问题。
android:descendantFocusability="blocksDescendants"