2013-08-14 5 views
0

J'ai un fichier xml qui représente une diapositive qui est chargé par un PagerAdapter personnalisé:Régler emballage RelativeLayout à la taille de ImageView dans un PagerAdapter

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/slideWrap" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ccc" 
     android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/ivSlide" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/slide_im_putting_face" 
     android:contentDescription="image" 
     android:scaleType="fitXY" 
     android:adjustViewBounds="true"/> 

    <EditText 
     android:id="@+id/edtSlide" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:drawable/editbox_background_normal" 
     android:lines="3" 
     android:gravity="top|left" 
     android:inputType="textMultiLine" 
     android:scrollHorizontally="false" 
     android:textSize="25sp" 
     android:hint="@string/main_hint" 
     android:textColor="#000" 
     android:padding="10dp" 
     android:layout_marginBottom="40dp" 
     android:layout_alignParentBottom="true"/> 

</RelativeLayout> 

Comment régler le conteneur slideWrap être les mêmes dimensions exactes comme l'ImageView mis à l'échelle? Pas tout à fait sûr comment faire un PagerAdapter.

+0

Avez-vous essayé d'utiliser 'android: layout_width = "wrap_content"' pour le 'RelativeLayout'? – Vikram

+0

J'ai, l'emballage a encore des pixels de hauteur ou de largeur supplémentaires en fonction de l'orientation. – jwBurnside

+0

Où voyez-vous ces 'extra extra height ou width pixels'? J'utilise votre fichier de mise en page. Parlez-vous de la zone blanche en bas en orientation portrait? – Vikram

Répondre

0

Ok, donc l'espace extra blanc était parce que le ViewPager, apparemment, vous ne pouvez pas définir le contenu de la hauteur de votre enveloppe: https://stackoverflow.com/a/8532550/641738

Au lieu de cela, je viens de calculer quelques pourcentages en fonction de la largeur statique/hauteur de toutes mes diapositives et définissez l'enveloppe en conséquence. J'aurais pu simplement définir les dimensions des diapositives dans leurs dossiers de mise en page dp respectifs, mais cela semblait être un problème. Semble fonctionner assez bien sur quelques appareils de poche tant que toutes les diapositives sont les mêmes dimensions. Les pourcentages étaient un peu tâtonnement:

// Check the display and make the necessary adjustments for Portrait mode 
    if(display.getRotation() == Surface.ROTATION_0 || display.getRotation() == Surface.ROTATION_180) { 
     double width = display.getWidth() * 0.93; 
     double adjustedHeight = width * 0.85; 
     wrapLayoutParams = new LinearLayout.LayoutParams((int)width, (int)adjustedHeight); 
    } 
    else { 
     double height = display.getHeight() * 0.73; 
     double adjustedWidth = height * 1.15; 
     wrapLayoutParams = new LinearLayout.LayoutParams((int)adjustedWidth, (int)height); 
    } 

    slideWrap.setLayoutParams(wrapLayoutParams); 
Questions connexes