3

J'ai une mise en page xml qui, lorsqu'elle est gonflée dans un objet View, la mise en page affiche comme prévu. Cependant, j'ai créé une coutume LinearLayout classe, et gonflez la mise en page xml lors de la création d'une instance de la classe en utilisantAndroid Custom LinearLayout et de gonflement xml

LayoutInflater.from(context).inflate(R.layout.icon_item, this, true); 

dans le constructeur. Je ne définis aucun LayoutParams ou quoi que ce soit sur la classe personnalisée LinearLayout, et quand j'essaie d'afficher la classe personnalisée, il semble qu'il y ait des marges bizarres placées qui coupent une partie du texte dans la mise en page à l'intérieur.

Je veux savoir s'il existe un moyen de définir le LinearLayout personnalisé afin qu'il n'a aucun effet sur la mise en page xml, mais agit simplement comme un conteneur invisible. Je pensais régler "attachToRoot" sur true quand gonfler résoudrait cela, mais n'a pas fonctionné comme prévu.

+3

Une image avec le problème ou, mieux encore, du code serait très utile. – Luksprog

Répondre

0

Lorsque vous utilisez inflate(..) avec attachToRoot = true, cela est l'équivalent de placer physiquement le XML à l'intérieur du ViewGroup comme ceci:

<LinearLayout ..> 
    <TextView .. /> 
</LinearLayout> 

signifie également que lorsque étant measure « d et aménagé par le LinearLayout il sera hérite des propriétés de disposition imposées dans votre mise en page XML que vous êtes en train de gonfler.

Donc, si vous <TextView..>android:layout_margin="8dp" ou contient des padding par exemple, votre CustomLinearLayout sera mise en page aussi la vue en utilisant ces Layout propriétés.

Je publierais plus de code si vous voulez que je corrige/crée une meilleure solution pour vous.