horizo​​ntalscrollview的fillviewport禁用滚动?

时间:2011-03-15 03:55:26

标签: android android-layout android-scrollbar

我有这个布局,如果我不在我的Horizo​​ntalScrollView中使用fillviewport = true,它的缩放很奇怪(可能是由于不可靠的布局嵌套)。

当fillviewport = false时,一切都工作很好(除了奇数缩放),但是当fillviewport = true时,缩放是完美的但不会发生滚动。

这是布局(注意:我知道你不应该在滚动视图中放置webview。但是webview没有smoothscrollto也没有公开setscroller方法,所以...... bleh。)

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webContainer"
    android:layout_below="@+id/titlebar"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">
    <WebView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webZ"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />
</HorizontalScrollView>

设置android:fillViewport =“true”通常不会禁用视图中的滚动,是吗?

它应该确保滚动视图填充视口而不管其内容的大小,是吗?我认为视口是屏幕的可见区域,并且在webview中可见区域的边缘肯定有更多内容,我只是无法再滚动到它。

我可以从logcat看到正在调用滚动方法,它们只是不改变屏幕。 (除非我将fillviewport设置为false。)

2 个答案:

答案 0 :(得分:5)

问题是你使用“fill_parent”,意思是“和我父母一样大”。请改为使用wrap_content作为宽度。

答案 1 :(得分:2)

我在使用包含WebView的标准ScrollView时遇到类似的问题:滚动不再起作用了。将fill_parent更改为wrap_content对我没有用。

当扩展视图是TextView时,Romain Guy的示例工作得很好,但当它被WebView替换时却没有。

什么不起作用:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:fillViewport="true">
    <LinearLayout
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical">
        <WebView android:id="@+id/webview"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:layout_weight="1.0">
        </WebView>
        <Button 
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="Click">
        </Button>
    </LinearLayout>     
</ScrollView>

当我在webview中添加少量数据时,似乎没问题:

small_data_not_ok1

但是当我用大量数据填充WebView时,它无法正常工作,如下所示:

small_data_not_ok2

始终显示按钮,滚动不再起作用。事实上,触摸滚动不起作用,DPAD滚动工作......

我没有找到任何理由,但我找到了一个解决方法:它包括添加一个包含WebView的LinearLayout

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:fillViewport="true">
    <LinearLayout
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical">
        <LinearLayout android:id="@+id/linearlayout"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:layout_weight="1.0"
            android:orientation="vertical">
            <WebView android:id="@+id/webview"
                android:layout_width="fill_parent" android:layout_height="wrap_content">
            </WebView>
        </LinearLayout>
        <Button 
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="Click">
        </Button>
    </LinearLayout>     
</ScrollView>

现在工作正常:

ok1 ok2