2015-10-30 1 views
-1

J'essaie d'implémenter une mise en page qui est divisée en 2 parties. La partie supérieure peut contenir un textview qui doit être capable de défiler, la partie inférieure contient un textview et si celui-ci étend l'écran, je veux que tout l'écran défile.Mise en page Android avec plusieurs scrollview

C'est ce que j'ai jusqu'à présent:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/holo_blue_bright" 
    android:padding="5dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:weightSum="1"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.50" 
      android:background="@android:color/holo_green_dark" 
      android:orientation="vertical"> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="New Text" /> 
      <ScrollView 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent"> 
       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien est, iaculis sed sodales at, tempus quis dui. Vivamus sem lacus, blandit et facilisis quis, interdum sed risus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam erat turpis, tristique id velit non, lacinia gravida dui. Vestibulum at sodales odio, vitae cursus nulla. Aliquam erat volutpat. Ut placerat orci et urna fermentum consectetur. Cras ut feugiat sem. Ut vitae quam diam. Suspendisse eget ante quis sem pretium commodo. Sed blandit sollicitudin imperdiet. Suspendisse eget purus auctor, accumsan magna vitae, elementum metus. Maecenas iaculis eget odio eu volutpat. Nunc tincidunt tellus vel turpis imperdiet, sit amet dapibus lacus pretium. Ut porttitor risus mattis molestie vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien est, iaculis sed sodales at, tempus quis dui. Vivamus sem lacus, blandit et facilisis quis, interdum sed risus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam erat turpis, tristique id velit non, lacinia gravida dui. Vestibulum at sodales odio, vitae cursus nulla. Aliquam erat volutpat. Ut placerat orci et urna fermentum consectetur. Cras ut feugiat sem. Ut vitae quam diam. Suspendisse eget ante quis sem pretium commodo. Sed blandit sollicitudin imperdiet. Suspendisse eget purus auctor, accumsan magna vitae, elementum metus. Maecenas iaculis eget odio eu volutpat. Nunc tincidunt tellus vel turpis imperdiet, sit amet dapibus lacus pretium. Ut porttitor risus mattis molestie vestibulum."/> 
      </ScrollView> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="0.50" 
      android:background="@android:color/holo_green_light" 
      android:orientation="vertical"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien est, iaculis sed sodales at, tempus quis dui. Vivamus sem lacus, blandit et facilisis quis, interdum sed risus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam erat turpis, tristique id velit non, lacinia gravida dui. Vestibulum at sodales odio, vitae cursus nulla. Aliquam erat volutpat. Ut placerat orci et urna fermentum consectetur. Cras ut feugiat sem. Ut vitae quam diam. Suspendisse eget ante quis sem pretium commodo. Sed blandit sollicitudin imperdiet. Suspendisse eget purus auctor, accumsan magna vitae, elementum metus. Maecenas iaculis eget odio eu volutpat. Nunc tincidunt tellus vel turpis imperdiet, sit amet dapibus lacus pretium. Ut porttitor risus mattis molestie vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sapien est, iaculis sed sodales at, tempus quis dui. Vivamus sem lacus, blandit et facilisis quis, interdum sed risus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam erat turpis, tristique id velit non, lacinia gravida dui. Vestibulum at sodales odio, vitae cursus nulla. Aliquam erat volutpat. Ut placerat orci et urna fermentum consectetur. Cras ut feugiat sem. Ut vitae quam diam. Suspendisse eget ante quis sem pretium commodo. Sed blandit sollicitudin imperdiet. Suspendisse eget purus auctor, accumsan magna vitae, elementum metus. Maecenas iaculis eget odio eu volutpat. Nunc tincidunt tellus vel turpis imperdiet, sit amet dapibus lacus pretium. Ut porttitor risus mattis molestie vestibulum."/> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 
</LinearLayout> 

La structure résultante ressemble à ce layout

Ce ne marche pas tout à fait le travail que je le voudrais à. Qu'est-ce que je rate ?

+4

** 1 ** Une vue défilante à l'intérieur d'une autre est une mauvaise pratique. ** 2 ** L'imbrication de mise en page est mauvaise pour les performances. –

Répondre

0

Vous ne pouvez pas avoir une vue défilante dans une autre sans travailler avec les écouteurs tactiles. Par défaut, cela ne fonctionnera pas correctement car le système ne sait pas quelle vue défiler pour passer les événements tactiles.

Vous pouvez écrire un écouteur tactile qui verrouille l'une des vues de défilement et transmet les événements tactiles à l'autre. Ceci est similaire à l'implémentation de l'actualisation sur une vue recycleur/liste. En position 0, activer le pull-to-refresh, et à n'importe quelle autre position verrouiller le pull-to-refresh.

+0

C'est bon à savoir, mais ma question était plus à propos de pourquoi ma mise en page ne s'affiche pas comme je le veux. Le scrollview supérieur affiche juste le texte intégral au lieu de le "recadrer" –