2016-12-18 2 views
0

Je développe l'application comme Galerie d'images avec des images récupérées sur le web. Toutes les images ont la même largeur 200px et la hauteur 280-300px. J'utilise RecyclerView avec Adapter.ViewHolder et GridLayoutManager avec le nombre de travées = 2. Images de chargement avec Picasso bibliothèque.Comment rendre l'application Image Gallery identique sur TOUTES les tailles d'écran?

item_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<ImageView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tile_picture" 
    android:layout_width="match_parent" 
    android:layout_height="260dp" 
    android:layout_margin="1dp" 
    android:scaleType="centerCrop"/> 

Sur mon appareil 5" 720x1280 il est l'air bien. Screenshot Mais quand je lance l'application sur d'autres appareils, ça ne semble pas si bon ... Sur 5.5" 1080x1920 il y a des marges supplémentaires entre les images. Sur le vieil 3.7" 480x800 il y a seulement une travée, largeur un peu plus, que la taille d'un demi-écran. Je suggère, parce que android:layout_height="260dp" codé en dur. Alors, comment puis-je obtenir le même look sur différents appareils?

Répondre

0

je peux vous suggérer de mettre en œuvre une vue personnalisée, et onMeasure obtenir la largeur de l'écran, puis passer la moitié de la largeur:

setMeasuredDimension(width/2, height);

Cela garantira que sur tout appareil, vous aurez un image sur la moitié de l'écran.

+1

Merci pour cette idée. Au lieu de cela, je viens d'essayer '@Override public TopViewHolder onCreateViewHolder (ViewGroup parent, int viewType) { Voir vue = LayoutInflater.from (mContext) .inflate (R.layout.main_tile_item, parent, false); int largeur = (parent.getMeasuredWidth()/2) - 4; int height = (int) (largeur * 1,5); view.setMinimumHauteur (hauteur); Renvoyer un nouveau TopViewHolder (voir); } 'Et cela semble fonctionner! –