218 votes

Sous Android, comment créer de l'espace entre les enfants de LinearLayout?

Je suis en programmant l'ajout de points de vue à la verticale LinearLayout, et je voudrais avoir un peu d'espace entre les points de vue. J'ai essayé d'ajouter: setPadding(0, 1, 0, 1) à ma CustomView constructeur, mais cela ne semble pas avoir d'effet. Tous les conseils?

*Il a été souligné que je devrais utiliser des marges. Depuis que je suis l'ajout dynamique de vues, j'ai besoin de définir les marges de code (pas dans le xml). Je crois que la façon de le faire est ci-dessous, mais il ne fonctionne pas.

public class MyView extends View
{
    public MyView (Context context)
    {
        super(context);

        MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 10, 0, 10);
        setLayoutParams(params);

*Modifier. J'ai aussi essayé d'utiliser MarginLayoutParams comme un paramètre tout en ajoutant le point de vue de la disposition Linéaire (comme ci-dessous). Cela aussi n'a pas fonctionné:

MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);

Je vous remercie.

261voto

riwnodennyk Points 1181

La solution API> = 11 :

Vous pouvez intégrer le rembourrage dans le diviseur. Si vous n’en utilisiez aucun, créez simplement un dessin vide grand et définissez-le comme diviseur de LinearLayout :

     <LinearLayout
            android:showDividers="middle"
            android:divider="@drawable/empty_tall_divider"
...>...</LinearLayout>
 

empty_tall_divider.xml:

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

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
            android:height="40dp"
            android:width="0dp"/>
</shape>
 

174voto

Thomas Points 1342

Vous devriez android:layout_margin<Side> sur les enfants. Le rembourrage est interne.

43voto

worked Points 2005

Il serait utile que Android propose un attribut "gap" pour la mise en page ViewGroups, tel que android: gap = "20dp". Cette valeur serait appliquée uniquement entre les vues enfants. Juste mes deux cents.


"Modifier": Android prend désormais en charge l'ajout d' espace entre les vues. C'est à partir de 4.0 ICS.

26voto

Gorky Points 260

L'exemple ci-dessous ne fait que ce dont vous avez besoin par programme. J'ai utilisé une taille fixe de (140 398).

 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(140, 398);
        layoutParams.setMargins(24, 0, 24, 0);
        layout.addView(button,layoutParams);
 

3voto

cfei Points 692

Utilisez LinearLayout.LayoutParams au lieu de MarginLayoutParams . Voici la documentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X