J'ajoute par programme des vues personnalisées à un LinearLayout vertical, et j'aimerais qu'il y ait un espace entre les vues. J'ai essayé d'ajouter: setPadding (0, 1, 0, 1) à mon constructeur CustomView, mais cela ne semble pas avoir d'effet. Aucun conseil?
* Il a été souligné que je devrais utiliser des marges. Puisque j'ajoute dynamiquement des vues, je dois définir les marges à partir du code (pas en xml). Je pense que la façon de procéder est ci-dessous, mais cela 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);
*Éditer. J'ai également essayé d'utiliser MarginLayoutParams comme paramètre tout en ajoutant les vues à la disposition linéaire (comme ci-dessous). Cela n'a pas non plus fonctionné:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Réponses:
Vous devriez
android:layout_margin<Side>
sur les enfants. Le rembourrage est interne.la source
La solution API> = 11 :
Vous pouvez intégrer le rembourrage dans le diviseur. Si vous n'en utilisez aucun, créez simplement un grand dessin vide et définissez-le comme
LinearLayout
diviseur de:empty_tall_divider.xml:
la source
GONE
. En spécifiant,android:showDividers="middle"
vous n'obtiendrez que l'espace où vous en avez réellement besoin.Android prend désormais en charge l'ajout d'une vue d' espace entre les vues. Il est disponible à partir de 4.0 ICS.
la source
L'exemple ci-dessous fait simplement ce dont vous avez besoin par programme. J'ai utilisé une taille fixe de (140 398).
la source
Depuis le niveau d'API 14, vous pouvez simplement ajouter un diviseur (transparent) dessinable:
et il s'occupera du reste pour vous!
la source
8dp
d'où cela vient-il?Utilisez à la
LinearLayout.LayoutParams
place deMarginLayoutParams
. Voici la documentation.la source
LinearLayout.LayoutParams
étendMarginLayoutParams
et il hérite de la mêmesetMargins()
méthode que vous utilisiez ci-dessus ...Si vous utilisez ActionBarSherlock , vous pouvez utiliser com.actionbarsherlock.internal.widget.IcsLinearLayout:
la source
Utilisation du remplissage dans la disposition de la vue enfant.
layout.xml
backage_text.xml
la source
Vous pouvez obtenir le
LayoutParams
parent deLinearLayout
et appliquer aux vues individuelles de cette façon:la source
Essayez d'ajouter un widget Espace après avoir ajouté une vue comme celle-ci:
la source
Un moyen simple de le faire de manière dynamique consiste à ajouter un remplissage aux enfants . Vous pouvez simplement le définir en utilisant .setPadding () sur l'objet à ajouter. Cet exemple ajoute un ImageView à un LinearLayout:
L'image suivante montre deux ImageViews qui ont été ajoutées avec un remplissage:
la source
Si votre mise en page contient des étiquettes ou un conteneur pour le texte. Vous pouvez ajouter à la fin de chaque texte "\ n" pour diviser une ligne et faire de l'espace entre les éléments.
Exemple:
la source