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?
la source
android:weight
.Je sais que ce message est très ancien, pour ceux qui ne veulent pas l'utiliser
android:fillViewport="true"
car il ne fait parfois pas apparaître l'edittext au-dessus du clavier. Utilisez la disposition relative au lieu de LinearLayout, cela résout le problème.la source
Pouvez-vous fournir votre mise en page xml? Cela permettrait aux utilisateurs de recréer le problème avec un minimum d'effort.
Vous devrez peut-être définir
pour l'élément que vous souhaitez développer
la source
La solution est d'utiliser
android:fillViewport="true"
en mode Défilement et essayez en outre d'utiliser
"wrap_content"
au lieu de"fill_parent"
comme"fill_parent"
est obsolète maintenant.
la source
J'ai utilisé dynamiquement pour l'obtenir. J'ai un LinearLayout et dans ce ScrollView utilisé comme un enfant. Ensuite, je reprends LinearLayout et j'ajoute ce que vous voulez voir à ce LinearLayout, puis ce LinearLayout s'ajoute à ScrollView et enfin j'ajoute ce ScrollView à LinearLayout. Ensuite, vous pouvez obtenir un défilement dans votre ScrollView et rien ne restera visible.
LinearLayout (Parent) - ScrollView (enfant de LinerLayout) - LinearLayout (enfant de ScrollView) - ajoutez ici textView, Buttons, spinner etc. tout ce que vous voulez. Ajoutez ensuite ce LinearLyout à ScrollView. Bcoz un seul ENFANT pour ScrollView applicable et ajoutez en dernier ce ScrollView à LinearLyout.Si la zone définie dépasse la taille de l'écran, vous obtiendrez un défilement dans ScrollView.
la source
Dans mon cas, je n'ai pas donné le
Donc, par défaut, cela prend horizontal, mais scrollview défile verticalement, veuillez donc vérifier si 'android: orientation = "vertical"' est défini sur l'enfant de votre ScrollView (dans le cas de LinearLayout).
.
la source