J'ai utilisé une disposition relative et je veux définir le bouton en bas de l'écran. Toutefois, tout se met en bas et j'aimerais avoir une marge afin qu'il y ait un peu d'espace entre la fin de l'écran/voir et le bouton. Cependant, quoi que je fasse, la marge du bouton ne fait rien sur la version 2.1+ pour une raison quelconque. La mise en page relative contient un arrière-plan donc je ne peux que la marge à ce sujet.
Quelqu'un sait un correctif pour cela?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginBottom="0dp"
Android:background="@drawable/background" >
<Button
Android:id="@+id/confirm_mobile_button_next"
Android:layout_width="fill_parent"
Android:layout_height="40dip"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="false"
Android:layout_centerHorizontal="false"
Android:layout_centerInParent="false"
Android:layout_margin="15dp"
Android:background="@drawable/button_shape_selector"
Android:paddingLeft="10dip"
Android:paddingRight="10dip"
Android:text="@string/confirm_mobile_no_continue"
Android:textColor="@color/white"
Android:textStyle="bold" />
</RelativeLayout>
Vous pouvez simplement ajouter un remplissage à RelativeLayout au lieu d’une marge au Bouton, par exemple. Android:paddingBottom="15dp"
.
En général, je teste toujours ma mise en page dans l'aperçu d'Exclipse à l'aide du paramètre API Niveau 8. Cela donne des résultats assez précis pour la plupart des appareils, y compris ICS et JB.
Vous pouvez également placer un View
aligné sur le bas du RelativeLayout
et définir sa hauteur sur la marge inférieure à utiliser (ou simplement spécifier une valeur pour layout_marginBottom
) ainsi:
<RelativeLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
>
<ImageView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:src="@drawable/some_image"
Android:adjustViewBounds="true"
/>
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="Some Overlay"
Android:padding="3dip"
Android:gravity="center_vertical|center_horizontal"
Android:layout_above="@+id/empty_view"
Android:layout_marginBottom="35dip"
/>
<View
Android:id = "@+id/empty_view"
Android:layout_height = "30dip"
Android:layout_width = "match_parent"
Android:visibility="invisible"
Android:layout_alignParentBottom="true"
/>
</RelativeLayout>
Cet exemple remplit le RelativeLayout
avec le ImageView
et positionne un TextView
sur le ImageView
.
Yu peut utiliser l'attribut translateY
translateY="-16dp"
Code final
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginBottom="0dp"
Android:background="@drawable/background">
<Button
Android:id="@+id/confirm_mobile_button_next"
Android:layout_width="fill_parent"
Android:layout_height="40dip"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="false"
Android:layout_centerHorizontal="false"
Android:layout_centerInParent="false"
Android:layout_margin="15dp"
Android:background="@drawable/button_shape_selector"
Android:paddingLeft="10dip"
Android:paddingRight="10dip"
Android:text="@string/confirm_mobile_no_continue"
Android:textColor="@color/white"
Android:textStyle="bold"
Android:translateY="-16dp" />
</RelativeLayout>
seule la solution de travail suggérée par @franny zhao est présentée ci-dessous.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<FrameLayout
Android:id="@+id/fl_layout"
Android:layout_alignParentBottom="true"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<TextView
Android:id="@+id/tv_layout"
Android:text="hello world"
Android:layout_marginBottom="50dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
</FrameLayout>
</RelativeLayout>
Si vous ajoutez un remplissage à la vue alignée du bas, comme suggéré par d'autres, l'arrière-plan de la vue sera également étendu. Si vous avez un fond coloré, la vue sera comme collée vers le bas. Le rembourrage et la marge sont complètement différents, le rembourrage fait partie de la vue, mais la marge laisse un espace entre les vues.
Je pense que le meilleur moyen est de définir:
<...
Android:layout_alignParentBottom="true" />
puis dans Java code derrière:
Button confirm_mobile_button_next = (Button)findViewById(R.id.confirm_mobile_button_next)
confirm_mobile_button_next.setTransitionY(-THE_VALUE) or setTransitionX(-THE_VALUE)
Je pense que le meilleur moyen est de définir Android: layout_alignParentBottom en XML puis dans Java derrière:
Button confirm_mobile_button_next = (Button)findViewById(R.id.confirm_mobile_button_next)
et
confirm_mobile_button_next.setTransitionY(-THE_VALUE) or setTransitionX(-THE_VALUE)
Étant donné que je suis tombé sur cette question et que je n'ai trouvé aucune réponse à ma situation, j'ai commencé à réfléchir pendant une demi-seconde et j'ai résolu le problème en définissant une marge négative sur la vue à l'intérieur de l'exemple RelativeLayout:
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ImageView
Android:layout_width="48dp"
Android:layout_height="48dp"
Android:layout_marginTop="-8dp"
Android:layout_marginStart="-8dp">
</RelativeLayout>
Cela devrait être utile à certaines personnes.
Vous pouvez utiliser un groupe de vues (FrameLayout ou LinearLayout, par exemple) pour envelopper la vue. Définissez alignParentBottom dans le ViewGroup extérieur, puis marginBottom peut fonctionner dans la Vue interne.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<FrameLayout
Android:id="@+id/fl_layout"
Android:layout_alignParentBottom="true"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<TextView
Android:id="@+id/tv_layout"
Android:text="hello world"
Android:layout_marginBottom="50dp"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
</FrameLayout>
</RelativeLayout>