6

我有这个布局,如果我不在我的 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。)

4

2 回答 2

5

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

于 2011-03-15T05:32:59.277 回答
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>

现在它工作正常:

好的1 好的2

于 2011-06-28T14:51:24.470 回答