Domanda

Ho questo layout, ed è scalato stranamente (probabilmente a causa inadviseable nidificazione layout) se io non uso fillviewport = true nel mio HorizontalScrollView.

Tutto funziona Peachy (tranne che per la scala dispari) quando fillviewport = false, ma quando fillviewport = TRUE, la scala è perfetto, ma non lo scorrimento avviene.

Questo è il layout (Nota:.. So che non dovresti mettere un WebView in uno ScrollView Ma WebView non ha uno smoothscrollto né esporre un metodo setscroller, quindi ... 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>

Setting Android:? FillViewport = "true" non lo scorrimento di solito non disabilitare in vista, lo fa

E 'solo supposto per essere sicuri che lo ScrollView riempie la finestra indipendentemente dalle dimensioni del suo contenuto, eh? Penso che la finestra è l'area visibile dello schermo, e c'è sicuramente più contenuti fuori dal bordo della zona visibile in WebView, non riesco proprio a scorrere ad esso più.

I può vedere dalle logcat che i tipi di scorrimento sono chiamati, solo che non cambiano lo schermo. (A meno che non ho impostato fillviewport su false.)

È stato utile?

Soluzione

Il problema è che si utilizza "fill_parent," che significa "essere grande come la mia madre". Utilizzare wrap_content per la larghezza, invece.

Altri suggerimenti

ho incontrato un problema simile con uno ScrollView standard contenente una WebView: lo scorrimento non funzionava più. Cambio della fill_parent per wrap_content non ha funzionato per me.

L'esempio di Romain Guy sta funzionando benissimo quando la vista espansa è un TextView, ma non è quando è sostituito da WebView.

Quello che non funziona:

<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>

Quando si aggiunge una piccola quantità di dati in WebView sembra ok:

small_data_not_ok1

Ma quando riempio il WebView con un sacco di dati, esso non funziona come potete vedere qui sotto:

small_data_not_ok2

Il pulsante viene sempre visualizzato e il rotolo non funziona più. In realtà, il tocco di scorrimento non funziona e le opere DPAD scroll ...

Non ho trovato alcuna ragione per questo, ma ho trovato una soluzione: essa consiste nell'aggiunta di un LinearLayout contenente la 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">
        <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>

Ora funziona benissimo:

ok1 OK2

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top