ClassCastException ViewGroup$LayoutParams ne peut pas être lancé à ViewPager$LayoutParams
Ma première ligne de code à l'intérieur de la méthode de remplacement onGlobalLayout()
:
img.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
ClassCastException intervenant dans la méthode de remplacement onGlobalLayout()
-
Journal Des Erreurs:
09-02 14:25:35.326: E/AndroidRuntime(5187): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v4.view.ViewPager$LayoutParams
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1319)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
Et quand je fais les opérations suivantes afin de résoudre l'erreur ci-dessus, comme indiqué dans les autres, de SORTE que les messages:
img.setLayoutParams(new ViewPager.LayoutParams(ViewPager.LayoutParams.MATCH_PARENT, 100));
Puis, j'obtiens l'erreur de compilation:
The constructor ViewPager.LayoutParams(int, int) is undefined
ViewPager en xml est défini comme:
<android.support.v4.view.ViewPager
android:id="@+id/HView"
android:layout_width="560dp"
android:layout_height="255dp"
android:layout_centerHorizontal="true"
android:layout_marginLeft="160sp"
android:layout_marginTop="110sp"
android:layout_marginBottom="80sp">
</android.support.v4.view.ViewPager>
developer.android.com/reference/android/support/v4/view/.... vérifier les constructeurs.
vérifiez vos importations veuillez
Ok j'ai vérifié ça, mais alors Comment le résoudre.
qu'est-ce que ce
public ViewPager.LayoutParams (Context context, AttributeSet attrs)
votre params sont mal aucun constructeur qui prend int int comme paramvérifiez vos importations veuillez
Ok j'ai vérifié ça, mais alors Comment le résoudre.
android.support.v4.view.ViewPager
qu'est-ce que ce
img
? où est-ce en XML, ce qui est le parent de ce img
OriginalL'auteur My God | 2013-09-02
Vous devez vous connecter pour publier un commentaire.
Votre image déjà a disposition params. Au lieu de les remplacer par un nouvel objet (qui est de type incorrect dans ce cas,
ViewPager
attend d'eux d'êtreViewPager.LayoutParams
), vous pouvez modifier la mise en page existante params comme ceci:Noter que inconditionnellement demandant de re-mise en page dans
onGlobalLayout()
peut être une mauvaise idée, conduisant à l'infini disposition de passe. Je n'ai pas vérifié moi-même si c'est le cas.onGlobalLayout()
et sa fonctionne bien, mais j'ai remarqué que mon code est appelé avantonGlobalLayout()
. Cela semble étrange comme threads. Si j'ai tenu à mettre à l'intérieuronGlobalLayout()
.Oui - pourriez-vous préciser pourquoi vous avez besoin de modifier la mise en page dans une mise en page globale auditeur? Il y a probablement une meilleure façon. (Cette réponse adresses de la classe cast exception problème).
Parce que je suis en train d'essayer d'obtenir la position de fin de l'affichage du texte et de l'image vue. Voir mon cette SORTE de poste et de mes propres accepté de répondre là-
http://stackoverflow.com/questions/18533224/getting-end-position-of-the-textview-and-imageview-with-respect-to-top-of-the-sc
Voir j'ai modifié ma propre réponse juste maintenant d'inclure l'img code.
Merci, je suis en mesure d'arrêter la lecture en boucle,
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
.OriginalL'auteur laalto
Faire de cette façon
Mise à JOUR
09-02 14:37:23.953: E/AndroidRuntime(5822): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v4.view.ViewPager$LayoutParams
Cela fonctionne bien, mais provoquant une boucle. J'ai essayé de mettre mon code en question juste après onGlobalLayout() et sa fonctionne bien, mais j'ai remarqué que mon code est appelé avant onGlobalLayout(). Cela semble étrange comme threads. Si j'ai tenu à mettre à l'intérieur onGlobalLayout().
OriginalL'auteur Biraj Zalavadia
Vous devriez assurez-vous que le
LayoutParam
classe que vous utilisez est de la bonne mère Layout de la classe. Et vous devez définir la LayoutParams de laViewGroup
laViewPager
est assis, en tant que parent de laView
qui a besoin de connaître la taille à allouer à la Vue enfant.Par exemple, dans votre cas, la
ViewGroup
est unRelativeLayout
, vous devez utiliser leRelativeLayout.LayoutParams
classe.Vous pouvez essayer suivantes:
OriginalL'auteur Ritesh Gune