J'ai un LinearLayout
intérieur ScrollView
qui a android:layout_height="fill_parent"
, mais il ne s'étend pas sur toute la hauteur du ScrollView
. Ma disposition ressemble à ceci:
level layout layout_width layout_height
1 LinearLayout fill_parent fill_parent
2 LinearLayout fill_parent wrap_content
3 (some irrelevant stuff)
2 ScrollView fill_parent fill_parent <-- this expands full height
3 LinearLayout fill_parent fill_parent <-- this does not (has orientation=vertical)
(following stuff probably are irrelevant, but just to be sure:)
4 TextView fill_parent fill_parent
4 LinearLayout fill_parent wrap_content
Je peux voir que le LinearLayout
ne s'étend pas sur toute la hauteur du ScrollView
parce que dans Eclipse dans Android Layout Editor
, si je sélectionne le ScrollView
(dans le panneau Contour), il est mis en surbrillance avec une bordure rouge qui remplit l'écran vers le bas mais quand je sélectionne le LinearLayout
son surlignage ne s'étend pas au bas de l'écran. Comment puis-je le faire faire?
L'effet que j'essaie d'obtenir est d'avoir du texte et un bouton en dessous (à l'intérieur du LinearLayout
niveau 4, il n'y a qu'un bouton). Le texte peut être suffisamment grand pour nécessiter une barre de défilement, auquel cas je souhaite que l'utilisateur doive faire défiler vers le bas pour voir le bouton. Dans le cas où le texte n'est pas assez grand pour une barre de défilement, je veux que le LinearLayout
contenant le bouton reste en bas de l'écran.
Au début, je pensais que je ne devrais pas publier l'intégralité du XML, car c'est généralement un refus de voir un énorme morceau de code dans une question. Cependant, il semble que cela soit nécessaire, alors voici la mise en page complète.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/video_layout"
android:focusable="true"
style="@style/VideoLayout">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@android:drawable/ic_media_play"
android:foregroundGravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/video_thumb"
android:padding="5dip"
android:background="#454545"/>
</FrameLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
style="@style/VideoTitle"
android:id="@+id/video_title"
android:layout_gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<!-- this ScrollView expands the full height of the screen.
However, the next LinearLayout does not expand the full height of the ScrollView -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_gravity="fill"
android:orientation="vertical"
android:id="@+id/info_layout">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/info_body"
style="@style/InfoText"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="@android:style/ButtonBar">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="@string/button_readmore"
android:id="@+id/btn_read_more"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Pour le moment, j'ai eu recours à android:layout_gravity="bottom"
la problématique LinearLayout
, qui fait que le bouton reste collé au bas de l'écran quoi qu'il arrive. Mais cela fait également coller le texte au bas de l'écran, ce qui n'est pas exactement ce que je recherchais.
Mise à jour: gratter cela, android:layout_gravity="bottom"
rend ScrollView
impossible le défilement. D'autres idées?
android:weight
.