2017-09-06 4 views
0

Ich erstelle eine Android-Aktivität, in der sich ein ScrollView mit einem ViewPager und einem TextView befindet. Die Seiten des ViewPagers sind Fragmente mit einem einzigen ImageView. Ich lade Bilder mit Glide in das ImageView.Android-Fotoalbum mit ViewPager und Glide

Ich möchte, dass die Bildbreite den Bildschirm ausfüllt und die Höhe so angepasst wird, dass das Verhältnis des Bildes beibehalten wird. Das Problem ist, dass

<android.support.v4.view.ViewPager 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

mit

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

in es wird nicht funktionieren. Die Höhe des Bildes ist immer 0.

Ich fand eine suboptimale Lösung: https://stackoverflow.com/a/19505733/4420321. Das Problem ist, dass ich das genaue Verhältnis des Bildes kennen muss, um die Höhe richtig zu ändern.

Im Moment funktioniert es mit 800x600 Bilder, aber nicht mit anderen. Gibt es einen Weg, um es mit irgendeinem Verhältnis zu arbeiten? Oder gibt es eine bessere Lösung für dieses Problem?

enter image description here

Antwort

0

Dies würde das Bild, um die Bildschirmbreite und -höhe nach dem Seitenverhältnis des Originalbildes zu füllen. Um diese Methode zu verwenden, müssen Sie das Seitenverhältnis fest codieren.

Display display = getWindowManager().getDefaultDisplay(); 
ImageView imageView = (LinearLayout) findViewById(R.id.imageView); 
int width = display.getWidth(); 
int height = (int) width * 0.75; // 0.75 if image aspect ration is 4:3, change accordingly 
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, height); 

Ich denke, das wird Ihr Problem lösen.

+0

Vielen Dank für Ihre Antwort, aber dies ist genau meine aktuelle Lösung. Ich muss das Seitenverhältnis aufzeichnen, aber was, wenn ich es nicht weiß oder mehrere Bilder mit unterschiedlichen Verhältnissen haben? Zum Beispiel habe ich ein Bild von 3 800x600 Bilder und ein anderes von 3 1920x1080. – hashtagslam