Définir les paramètres de disposition RelativeLayout par programme - Lance ClassCastException
Je suis gonflant un RelativeLayout à partir de XML et ensuite tenter par programme sets de sa mise en page params et que je reçois une ClassCastException.
Code:
profileHeader = (RelativeLayout)mInflater.inflate(R.layout.user_profile_header, null);
profileHeader.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
jette
E/AndroidRuntime( 2963): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
E/AndroidRuntime( 2963): at android.widget.ListView.measureScrapChild(ListView.java:1119)
E/AndroidRuntime( 2963): at android.widget.ListView.measureHeightOfChildren(ListView.java:1202)
E/AndroidRuntime( 2963): at android.widget.ListView.onMeasure(ListView.java:1111)
E/AndroidRuntime( 2963): at android.view.View.measure(View.java:8222)
E/AndroidRuntime( 2963): at android.view.ViewGroup.measureChildWithMargins(V
J'ai vu d'autres notes sur le net pour essayer d'utiliser LinearLayout.LayoutParams mais qui ne semble pas l'aider.
Si vous vous demandez pourquoi je fais cela à tous et PAS seulement le définir dans le fichier XML du son parce que je vois quelque chose de bizarre où la mise en page "saute" d'une attelle/attelle. Je SUIS un réglage à fill_parent/fill_parent dans le fichier XML et sur de défilement de l'affichage "rétrécit" de ce qui semble être enveloppement enveloppement. C'est vraiment bizarre. En regardant les foursquared android code source, j'ai trouvé un commentaire où le développeur dit la même chose:
"Quelque chose de bizarre qui se passe avec les paramètres de mise en page. Si nous n'avons pas explicitement définir la mise en page à remplir/remplir après le gonflage, la mise en page permet d'accéder à un enveloppement enveloppement de mise en page."
(FriendsActivity.java:258)
Qui ressemble à mon problème, donc je suis en train de faire la même chose (mise en page via le code), mais dans son cas, il est à l'aide de LinearLayout, alors que je suis en utilisant RelativeLayout.
Ce qui me manque? Merci à l'avance.
source d'informationauteur Cody Caughlan
Vous devez vous connecter pour publier un commentaire.
La mise en page paramètres doivent être du type de la mère. Donc si vous êtes à la création d'un RelativeLayout et de l'ajouter à une Liste, la mise en page params doit être de type Liste.LayoutParams, pas RelativeLayout.LayoutParams. La bonne façon de le faire est d'appeler gonfler de cette façon:
inflate(R. layout.monmodèle, theListView, false);
Cette version de inflate() va gonfler correctement les paramètres de mise en page (android:layout_*) défini en XML.
Si votre vue est dans une liste, vous devez utiliser
AbsListView.LayoutParams
.Voir aussi: Impossible de définir la marge de l'élément dans la ListView à l'aide personnalisée