Question

J'ai cette mise en page, et il est mis à l'échelle weirdly (probablement en raison de l'imbrication de la mise en page inadviseable) si je ne l'utilise fillviewport = true dans mon HorizontalScrollView.

Tout fonctionne Peachy (sauf pour la mise à l'échelle impair) lorsque fillviewport = false, mais quand fillviewport = true, la mise à l'échelle est parfait, mais pas de défilement se produit.

Ceci est la mise en page (Note:.. Je sais que vous n'êtes pas censé mettre un WebView dans un scrollview Mais WebView n'a pas de smoothscrollto ni exposer une méthode setscroller, alors ... 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>

Réglage android: fillViewport = "true" ne pose généralement pas de désactiver le défilement dans une vue, il fait

Il est juste censé être sûr que le scrollview remplit la fenêtre quelle que soit la taille de son contenu, hein? Je pense que la fenêtre est la zone visible de l'écran, et il y a certainement plus de contenu du bord de la zone visible dans la WebView, je ne peux pas défiler plus.

Je peux voir de logcat que les méthodes de défilement sont appelés, ils ne changent pas l'écran. (À moins que je mets fillviewport à false.)

Était-ce utile?

La solution

Le problème est que vous utilisez « fill_parent », qui signifie « être aussi grand que mes parents. » Utilisation wrap_content de la largeur à la place.

Autres conseils

Je rencontre un problème similaire avec un ScrollView standard contenant une WebView: le défilement ne fonctionnait plus. Changement de fill_parent à wrap_content n'a pas fonctionné pour moi.

L'exemple de Romain Guy fonctionne bien lorsque la vue agrandie est un TextView mais pas quand il est remplacé par WebView.

Qu'est-ce qui ne fonctionne pas:

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

Quand j'ajoute une petite quantité de données dans le WebView il semble ok:

small_data_not_ok1

Mais quand je remplis WebView avec beaucoup de données, il ne fonctionne pas comme vous pouvez le voir ci-dessous:

small_data_not_ok2

Le bouton est toujours affiché et le défilement ne fonctionne plus. En fait, le défilement tactile ne fonctionne pas et les travaux du DPAD ...

Je ne l'ai pas trouvé aucune raison pour cela, mais j'ai trouvé une solution: il consiste à ajouter un LinearLayout contenant le 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>

Maintenant, il fonctionne très bien:

OK1 ok2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top