Frage

Ich habe dieses Layout und es ist seltsam skaliert (wahrscheinlich aufgrund unangemessener Layout -Verschachteln), wenn ich in meiner HorizontalsCrollView nicht fillViewport = true verwende.

Alles funktioniert peachy (bis auf die seltsame Skalierung), wenn fillViewport = false, aber wenn fillViewport = true ist, ist die Skalierung perfekt, aber es kommt nicht vor, dass kein Scrollen passiert.

Dies ist das Layout (Hinweis: Ich weiß, dass Sie kein WebView in eine ScrollView einfügen sollen. WebView hat jedoch weder eine SmoothScrollto noch eine SetsCroller -Methode, also ... 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>

Einstellung von Android: fillViewport = "true" deaktiviert normalerweise nicht das Scrollen in einer Ansicht, oder?

Es soll nur sicher sein, dass das Scrollview das Ansichtsfenster unabhängig von der Größe seines Inhalts füllt, was? Ich denke, das Ansichtsfenster ist der sichtbare Bereich des Bildschirms, und es gibt definitiv mehr Inhalte vom Rand des sichtbaren Bereichs im Webview. Ich kann einfach nicht mehr darauf scrollen.

Ich kann von LogCat sehen, dass die Scrolling -Methoden aufgerufen werden, sie ändern den Bildschirm einfach nicht. (Es sei denn, ich habe FillViewport auf false gesetzt.)

War es hilfreich?

Lösung

Das Problem ist, dass Sie "fill_parent" verwenden, was "so groß wie mein Elternteil" bedeutet. Verwenden Sie stattdessen Wrap_Content für die Breite.

Andere Tipps

Ich stoße auf ein ähnliches Problem mit einer Standard -ScrollView mit einer Webview: Die Scrolling funktionierte nicht mehr. Wechsel von fill_parent zu Wrap_Content hat bei mir nicht funktioniert.

Das Beispiel von Romain Guy funktioniert einwandfrei, wenn die erweiterte Ansicht ein Textview ist, aber nicht, wenn es durch WebView ersetzt wird.

Was funktioniert nicht:

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

Wenn ich in der Webview eine kleine Datenmenge hinzufüge, scheint es in Ordnung zu sein:

small_data_not_ok1

Wenn ich das WebView jedoch mit vielen Daten fülle, funktioniert es nicht, wie Sie unten sehen können:

small_data_not_ok2

Die Schaltfläche wird immer angezeigt und die Schriftrolle funktioniert nicht mehr. Tatsächlich funktioniert die Touchsrolle nicht und die DPAD -Schriftrolle funktioniert ...

Ich habe keinen Grund dafür gefunden, aber ich fand eine Problemumgehung: Es besteht darin, ein Linearlayout mit dem WebView hinzuzufügen

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

Jetzt funktioniert es gut:

ok1 ok2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top