6
votes

Android différentes largeurs de mises en page dans la viewpager

Je veux créer une vue de défilement en utilisant un pager de vue horizontale. La vue de gauche doit avoir une largeur de plein écran, mais juste un quart de largeur (ce sera un panneau vertical comme dans le navigateur Dauphin). Il est possible de faire ça? J'ai changé Android: Layout_Width code> dans la mise en page droite, mais cela n'a pas fonctionné.

Mon code: P>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="50dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/light_blue" >


<TextView
    android:id="@+id/textView2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="RIGHT"/>

</LinearLayout>


1 commentaires

Oui c'est possible, tout est possible. Pouvez-vous donner du code de ce que vous avez fait?


3 Réponses :


2
votes

Regarder la source de la vision, ce n'est pas quelque chose qu'il est conçu à faire; Il utilise sa propre largeur pour calculer les distances de défilement, etc., avec l'hypothèse claire que tous les enfants auront la même largeur que le visionneur lui-même.

Pour votre cas spécifique, peut-il être une solution de contournement hacky, cependant. Vous pouvez spécifier une marge entre les pages adjacentes et cette marge peut être négative. Cela peut donner le résultat que vous souhaitez, à condition que la commande z-ordonnée des enfants du point de vue soit appropriée. Essayez, et voyez si cela fait ce dont vous avez besoin.


0 commentaires

2
votes

Adrian est parfaitement correct. ViewPager n'est pas conçu em> pour afficher une partie du prochain message sous forme d'aperçu / teaser, mais il peut strong> le faire. Dans mon ViewPagerCursorAdapter étend à la classe I / Code> Classe I Exécutez ceci:

public Object instantiateItem(View collection, final int position) {
    cursor.moveToPosition(position);
    View newView = getPageView(cursor, collection);
    if (cursor.getCount() > 1) {
        ((ViewPager)collection).setPageMargin(-overlapMargin);
        if (! cursor.isLast()) { newView.setPadding(0, 0, overlapMargin, 0); }
    }
    ((ViewPager) collection).addView(newView);
    return newView; //returns the object reference as the tag for identification.
}


1 commentaires

J'ai utilisé le code ci-dessus et je reçois les enfants qui se chevauchent dans la viewpager. Pouvez-vous m'aider à ce sujet?