Je ne peux pas comprendre pourquoi cela se produit. Je suis incapable de faire défiler mon scrollview. Il a un textView, une imageview et quelques mises en page linéaires à l'intérieur de celui-ci. Lorsque je remplace les dispositions imageview et linéaires par textview, cela fonctionne. C'est vraiment inhabituel et frustrant. Quelqu'un peut-il m'aider? Voici mon code:
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ScrollView
Android:id="@+id/scrollView1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fillViewport="true" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:animateLayoutChanges="true"
Android:orientation="vertical"
Android:scrollbars="vertical" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:text="Drop Text Down"
Android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="match_parent"
Android:layout_height="555dp"
Android:src="@drawable/ic_launcher" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/textView2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:id="@+id/ln"
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:background="#000000"
Android:orientation="vertical" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView06"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView05"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView04"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView03"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView02"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="100dp"
Android:orientation="vertical" >
<TextView
Android:id="@+id/TextView01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextViewTextView" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Merci.
La vue enfant d'une ScrollView
doit être définie sur wrap_content. Si vous le définissez à match_parent, il remplira la zone de la ScrollView
et ne défilera jamais, car il ne sera pas plus grand que la ScrollView
.
Essayez de remplacer la variable enfant LinearLayout
layout_height par wrap_content ou par une taille spécifique (en dp) au lieu de match_parent.
Mettre une vue vide à hauteur fixe
<View
Android:layout_width="match_parent"
Android:layout_height="50dp" />
comme dernier élément de la mise en page linéaire, qui est un enfant de la vue par défilement.
Cela a fonctionné pour moi ..
Votre enfant ScrollView
doit avoir la hauteur wrap_content
:
<ScrollView
Android:id="@+id/scrollView1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:animateLayoutChanges="true"
Android:orientation="vertical"
Android:scrollbars="vertical" >
...
...
</LinearLayout>
</ScrollView>
Vous devez définir la hauteur de LinearLayout (enfant de Scrollview) sur wrap_content.
Lorsque l'enfant est plus grand que ScrollView, l'attribut Android: fillViewport = "true" n'a aucun effet.
J'ai réussi à le résoudre en ajoutant (Android: windowSoftInputMode = "adjustResize | stateHidden") dans le manifeste d'activité, comme ci-dessous.
<activity
Android:name=".ui.main.MainActivity"
Android:label="@string/app_name"
Android:windowSoftInputMode="adjustResize|stateHidden"
Android:screenOrientation="portrait"
Android:theme="@style/AppTheme.NoActionBar">
</activity>