Android: Comment pouvez-vous vous aligner un bouton en bas de page et listview ci-dessus?
Je veux avoir un bouton au bas de la liste.
Si j'utilise relativeLayout/FrameLayout, il s'aligne mais listView descend très bas.
(Derrière le bouton en bas)
FrameLayout:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/btnButton"
android:text="Hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</FrameLayout>
</FrameLayout>
RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/btnButton"
android:text="Hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</RelativeLayout>
</RelativeLayout>
Au-dessus de deux codes fonctionnent uniquement comme la première image. Ce que je veux, c'est la deuxième image.
Quelqu'un peut-il aider?
Merci.
InformationsquelleAutor jclova | 2011-02-08
Vous devez vous connecter pour publier un commentaire.
Un
FrameLayout
but est de superposer des choses l'un sur l'autre. Ce n'est pas ce que vous voulez.Dans votre
RelativeLayout
exemple, vous définissez laListView
s de la hauteur et la largeur deMATCH_PARENT
cela va l'inciter à prendre la même quantité d'espace que son parent, et donc l'ensemble de l'espace sur la page (et couvre le bouton).Essayez quelque chose comme:
La
layout_weight
dicte la façon dont l'espace est utilisé. LeButton
ne veut pas aller au-delà de l'espace qu'il nécessite, de sorte qu'il a un poids de 0. LeListView
veut à l'ensemble de l'espace supplémentaire, de sorte qu'il a un poids de 1.Vous pourriez faire quelque chose de similaire à l'aide d'un
RelativeLayout
, mais si c'est juste ces deux éléments, puis je pense queLinearLayout
est plus simple.android:weight
devrait être:android:layout_weight
android:orientation="vertical"
et non à l'horizontale ou pas d'oriantation spécifié?android:layout_weight="0"
, et la liste elle-même commeandroid:layout_weight="1"
?Ici, c'est le design que vous recherchez.
L'essayer.
J'avais besoin de deux boutons côte-à-côte dans le bas. J'ai utilisé un linéaire horizontal layout, mais l'attribution
android:layout_height="0dp"
etandroid:layout_weight="0"
pour les boutons' linéaire de la mise en page n'a pas fonctionné. L'attributionandroid:layout_height="wrap_content"
pour juste les boutons " linéaire de la mise en page n'. Voici mon travail de mise en page:RelativeLayout
ignore ses enfantsandroid:layout_width
ouandroid:layout_height
attributs, si les enfants ont des attributs qui définissent leurleft
etright
outop
etbottom
valeurs, respectivement.Pour atteindre le résultat sur l'image de droite, l'affichage de la liste ci-dessus le bouton, votre mise en page devrait ressembler à ceci:
L'essentiel est de définir
android:layout_alignParentTop
(définittop
valeur) etandroid:layout_above
(définitbottom
valeur) dans votreRecyclerView
. De cette façon,RelativeLayout
ignoreandroid:layout_height="match_parent"
, et laRecyclerView
sera placé au-dessus de laButton
.Aussi, assurez-vous que vous regardez dans les
android:layout_alignWithParentIfMissing
, si vous avez une disposition plus complexe et vous devez toujours définir ces valeurs.Je suis à l'aide de Xamarin Android, et mon exigence est exactement le même que William T. Mallard, ci-dessus, c'est à dire une liste avec les 2 côte à côte des boutons en dessous.
La solution est cette réponse n'a pas fonctionné dans Xamarin Studio toutefois - lorsque j'ai mis la hauteur de la ListView "0dp", la liste tout simplement disparu.
Mon travail Xamarin Android code est comme suit:
J'ai aligné ButtonsLinearLayout vers le bas de l'écran, et de définir la liste à être au-dessus de ButtonsLinearLayout.
@jclova une chose que vous pouvez faire est d'utiliser
layout-below=@+id/listviewid
relatif de la mise en pageÀ votre disposition relative de la hauteur de la listview est
match_parent
qui est fill_parent(pour la version 2.1 et plus) donc, la meilleure solution est, si vous voulez utiliser une relative mise en page puis la première à Déclarer votre bouton puis votre liste afficher, faire la liste de position de la vue comme au-dessus de votre bouton id, Si vous souhaitez bouton toujours à fond, puis le faire alignParentBottom..Extrait de
Cela empêche votre liste vue de prendre toute la place et faire de votre bouton..
Ce sera la meilleure et la plus simple solution de ce problème. Juste ajouter
android:layout_above="@id/nameOfId"
dans la mise en page que vous souhaitez déplacer au-dessus à l'égard de cette disposition.