Comment puis-je définir ViewPager layoutParams par programmation?
J'ai le code suivant mais j'obtiens une exception
java.lang.ClassCastException:
android.de soutien.v4.vue.ViewPager$LayoutParams ne peut pas être lancé à
android.vue.ViewGroup$MarginLayoutParams
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.question_details_full_photo_view_pager);
Bundle bundle = getIntent().getExtras();
ArrayList<String> imageUrls = bundle.getStringArrayList("imageUrls");
ImagePagerAdapter imagePagerAdapter = new ImagePagerAdapter(this, imageUrls, true);
android.support.v4.view.ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager_full_photo);
android.support.v4.view.ViewPager.LayoutParams layoutParams = new LayoutParams();
layoutParams.width = LayoutParams.MATCH_PARENT;
layoutParams.height = LayoutParams.MATCH_PARENT;
viewPager.setLayoutParams(layoutParams);
viewPager.setAdapter(imagePagerAdapter);
}
Quelles sont les importations que vous utilisez?
Une solution rapide peut être (mais pas necessairly) pour définir: au lieu
Une solution rapide peut être (mais pas necessairly) pour définir: au lieu
android.support.v4.view.ViewPager.LayoutParams layoutParams = new LayoutParams();
-> android.support.v4.view.ViewGroup.LayoutParams layoutParams = new LayoutParams();
OriginalL'auteur code511788465541441 | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez vraiment pas à définir la mise en page params par programme juste pour le réglage de la largeur et de la hauteur de "match_parent": ce pourrait facilement être fait en utilisant fondamentaux déclarations xml.
Si toutefois il y a quelque chose de plus avancé, vous avez besoin que vous n'avez pas spécifié - telles que l'ajustement des marges ou en ajoutant des points de vue de manière dynamique, il est recommandé de mettre le ViewPager avec une mise en page correspondant à votre cas. Par exemple:
Dans ce cas, pour ajuster les marges (par exemple):
etc.
Noter que dans ce cas, le disposition params retourné par l'appel à un téléavertisseur.getLayoutParams() sont ceux de l'emballage RelativeLayout - ce qui pourrait être plus facilement manipulé à votre adaptées à vos besoins.
OriginalL'auteur d4vidi
C'est parce que vous avez mal compris le
LayoutParams
dans ce contexte : configuration de la mise en page paramètres de votre ViewPager sera mise à sa mère qui est une ViewGroup. Vous avez donc de passer une instance deViewGroup.LayoutParams
.Si vous voulez plutôt de jeter un composant dans votre ViewPager, vous devez définir la mise en page params de l'enfant avec une instance de
ViewPager.LayoutParams
il y a http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html Vous avez besoin d'utiliser le LayoutParam de
ViewPager
'parent qui n'est pas leViewPager
lui-même. Et j'ai juste oublié.. 🙂OriginalL'auteur Antoine Marques