Comment puis-je faire défiler verticalement la ConstraintLayout?
Le contenu de l'activité principale ressemble:
l'écran principal ressemble (tout cela à l'intérieur de ConstraintLayout):
- titre de l'image
- date
- l'image elle-même
- la description de l'image
La description de l'image peut être trop long pour être affiché, pour résoudre ce que je peux le mettre à l'intérieur un ScrollView, et cela fonctionne bien. Cependant, je tiens à le ScrollView l'ensemble de la ConstraintLayout, et cela ne fonctionne pas correctement: ne peut pas défiler et certains TextViews n'apparaissent pas!
Je suis nouveau sur Android développement; aide serait appréciée!
Code:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/desciptionScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.picture.nasa.nasadailyimage.NasaDailyImage"
tools:showIn="@layout/activity_nasa_daily_image">
<TextView
android:id="@+id/imageTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:text="@string/test_image_title"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/imageDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:text="@string/test_image_date"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageTitle" />
<ImageView
android:id="@+id/imageDisplay"
android:layout_width="368dp"
android:layout_height="408dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="3dp"
android:src="@mipmap/test_image"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageDate" />
<TextView
android:id="@+id/imageDescription"
android:layout_width="368dp"
android:layout_height="0dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:text="@string/test_image_description"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageDisplay" />
</android.support.constraint.ConstraintLayout>
OriginalL'auteur | 2017-04-17
Vous devez vous connecter pour publier un commentaire.
Pour la fabrication des éléments dans l'écran défilant, je pense que vous pouvez utiliser un NestedScrollView à l'intérieur d'un CoordinatorLayout.
J'ai l'habitude de mettre un LinearLayout avec tous les éléments que je voudrais y afficher.
Par exemple:
Si cela ne fonctionne pas, vous pouvez remplacer le ConstraintLayout avec un LinearLayout.
J'espère que ça aide.
Peut-être en mettant le ConstraintLayout à l'intérieur de la NestedScrollView.
J'ai juste édité ma réponse. Ma suggestion est d'utiliser un NestedScrollView un à l'intérieur qui a mis tous les éléments qui seraient de défilement.
j'ai essayé de mettre un très long titre afin de tester si la molette fonctionne et il l'a fait! elle fonctionne. Cependant la description de l'image ne s'affiche pas. avez-vous une idée pourquoi?
En plus de la vitesse de défilement, il semble que vous êtes à l'aide de la ConstraintLayout comme un conteneur pour le TextView et de l'ImageView. Si vous utilisez un NestedScrollView pour le défilement, alors vous avez juste besoin d'un conteneur pour que. J'ai l'habitude d'utiliser un LinearLayout pour seulement contenant tout ce qui.
OriginalL'auteur Angel Garcia
Pour ajouter de défilement à tout point de vue, vous ajoutez un ScrollView. Dans votre code, l'ajouter à la racine(Si la ScrolLView n'est pas la racine et il n'y a plus de contenu, ajouter la ScrollView autour de la ConstraintLayout). déplacer les espaces de noms(les lignes contenant
xmlns
) à la nouvelle racine. Ajouter la largeur et la hauteur dans le ScrollView à match_parent(ou ce que vous avez) et régler la hauteur de l'ConstraintLayout à wrap_content.Toutefois, vous ne serez pas en mesure de faire défiler correctement dans le mode de conception. (référence). Mais il faudra encore travailler comme ecpected sur un périphérique.
REMARQUE:
Si votre mise en page n'a pas de défilement avec un SCrollView, assurez-vous de définir le hauteur de la ConstraintLayout à wrap_content
OriginalL'auteur Zoe
entouré mon constrinat-mise en page avec un ScrollView tag et lui a donné la propriété android:isScrollContainer="true".
OriginalL'auteur Sam