2010-11-23 42 views
11

J'ai 3 vues de texte dans une mise en page, où le texte écrase un peu en bas sur mon droïde 2 ... Comment puis-je m'assurer que tout le texte est visible, et l'utilisateur peut défiler vers le bas (simplement avec son doigt) , pour voir le reste de mon texte?Si ScrollView ne prend en charge qu'un enfant direct, comment suis-je censé faire défiler toute une mise en page?

Merci!

EDIT:

<?xml version="1.0" encoding="utf-8"?> 


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ImageButton android:id="@+id/ImageButton01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/def" 
    android:layout_gravity="top|center"> 
    </ImageButton> 

<TextView android:id="@+id/oneView" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/one_def" 
android:layout_gravity="left|center" 
android:textSize="13dip"></TextView> 

<TextView android:text="@string/two_def" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="left|center" 
android:id="@+id/twoView" 
android:textSize="13dip"></TextView> 

<TextView android:text="@string/threedef_def" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="left|center" 
android:id="@+id/threeView" 
android:textSize="13dip"></TextView> 


</LinearLayout> 

Répondre

26

Donc, il devrait être comme ceci:

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

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

     <ImageButton ... /> 
     <TextView ... /> 
     <TextView ... /> 
     <TextView ... /> 

    </LinearLayout> 
</ScrollView> 
10

L'enfant direct de ScrollView devrait être une autre disposition qui prend en charge plusieurs enfants, comme RelativeLayout ou LinearLayout. Il vous suffit d'entourer votre LinearLayout actuel avec ScrollView de

+0

Puis-je encapsuler potentiellement un flipper entier comme un scrollview? – Sapp

+0

Je ne pense pas, puisque le flipper lui-même n'est pas ce que vous voulez faire défiler. Vous voulez faire défiler le contenu des membres Flipper. Rappelez-vous que certaines vues dans Android sont déjà défilables, notamment ListView; Toutefois, si vous utilisez des vues ou des canevas sans défilement, vous devez affecter plusieurs vues de défilement à votre flipper. –

+0

Je suis vraiment confus - j'ai édité dans mon xml pour voir si vous pouviez me montrer ce qui doit être fait pour faire défiler cette disposition si elle devait être trop grande pour l'écran – Sapp

2

Travaillé parfaitement.

Voici ma mise en page comme exemple de défilement d'un élément de contenu avec deux en-têtes au-dessus qui restent immobiles.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:id="@+id/mainMenu" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="#FFFFFFFF" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
    <FrameLayout 
    android:id="@+id/widget112" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 
     <ImageView 
     android:id="@+id/chemo_pro_header" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/chemo_pro_header" 
     > 
     </ImageView> 
     <ImageButton 
     android:id="@+id/menu_btn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/menu_btn_off" 
     android:background="@null" 
     android:layout_gravity="right" 
     android:padding="8px" 
     > 
     </ImageButton> 
    </FrameLayout> 
    <ImageView 
    android:layout_width="wrap_content" 
    android:id="@+id/news_head" 
    android:src="@drawable/news_head" 
    android:layout_height="wrap_content"> 
    </ImageView> 
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
      <TextView android:layout_marginLeft="6dip" android:text="Monday, November 29th, 2010" android:id="@+id/newsDateStamp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="serif" android:textStyle="italic" android:textColor="#ff999999"></TextView> 
      <TextView android:layout_marginLeft="6dip" android:text="Normal Article Titles Fit on These Lines and have room to be this long" android:textSize="16sp" android:typeface="serif" android:textStyle="bold" android:textColor="#ff000000" android:id="@+id/newsTitle" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
      <TextView android:layout_marginLeft="6dip" android:text="Article source" android:id="@+id/newsSource" android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="serif" android:textStyle="italic" android:textColor="#ff999999"></TextView> 
      <ImageView 
      android:layout_width="wrap_content" 
      android:id="@+id/news_image" 
      android:src="@drawable/news_image" 
      android:layout_height="wrap_content" android:layout_gravity="center"> 
      </ImageView> 
      <TextView android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras in volutpat enim. Donec tempus vestibulum risus in pellentesque. Etiam eget lorem at velit facilisis dapibus.\n\nNunc dolor sem, semper vel vestibulum eu, ultrices tempus augue. Donec ligula erat, tempor dignissim imperdiet et, rutrum sed nisi. Praesent dignissim nulla ullamcorper metus facilisis auctor. Duis elementum commodo dictum. Duis rhoncus hendrerit lectus in tincidunt. Ut est neque, rutrum ut auctor ac, aliquet ut massa. Nullam at felis ipsum. Curabitur adipiscing sodales massa, sed lobortis lectus ultrices quis. Integer lobortis cursus tellus sed tempus. Ut convallis ullamcorper interdum. Integer iaculis feugiat ultricies.\n\nNunc dolor sem, semper vel vestibulum eu, ultrices tempus augue. Donec ligula erat, tempor dignissim imperdiet et, rutrum sed nisi. Praesent dignissim nulla ullamcorper metus facilisis auctor. Duis elementum commodo dictum. Duis rhoncus hendrerit lectus in tincidunt. Ut est neque, rutrum ut auctor ac, aliquet ut massa." android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:typeface="serif" android:id="@+id/newsBody" android:layout_marginLeft="6dip" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#ff000000" android:layout_marginRight="6dip"></TextView> 
    </LinearLayout> 
    </ScrollView> 
</LinearLayout> 
0

si vous voulez faire défiler toute la mise en page juste faire scrollview le parent et faire la mise en page ou linéaire anyother mise en page de son premier enfant, puis ajouter d'autres mises en page à l'intérieur que .... par exemple:

<scrollview> 
    <linearLayout id = child1> 
    <Textview/> 
    <Textview/> 
    <button/> 
    <LinearLayout> 
     <textview/> 
    </LinearLayout 
    </LinearLayout> 
</scrollview 

ici la vue de défilement n'a qu'un seul enfant 'enfant1' reste tout à l'intérieur et donc la disposition entière est défilable