585 Stimmen

Wie man ein Bild in ImageView skaliert, um das Seitenverhältnis beizubehalten

In Android habe ich die layout_width eines ImageView auf fill_parent festgelegt (was die gesamte Breite des Telefons einnimmt).

Wenn das Bild, das ich dem ImageView gebe, größer ist als die layout_width, wird Android es skalieren, oder? Aber was ist mit der Höhe? Behält Android das Seitenverhältnis bei, wenn es das Bild skaliert?

Was ich herausgefunden habe, ist, dass oben und unten im ImageView weißer Raum entsteht, wenn Android ein Bild skaliert, das größer ist als das ImageView. Stimmt das? Wenn ja, wie kann ich diesen weißen Raum eliminieren?

13voto

Jeet Punkte 994

So hat es für mich innerhalb eines ConstraintLayouts funktioniert:

Dann habe ich im Code das drawable gesetzt als:

ImageView imgView = findViewById(R.id.myImg);
imgView.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.image_to_show, null));

Dies passt das Bild passend zum Seitenverhältnis an und hält es in der Mitte.

10voto

shafiq-ur-rehman Punkte 119

Dies hat mein Problem gelöst

android:adjustViewBounds="true"
android:scaleType="fitXY"

0 Stimmen

Es erhält nicht das Seitenverhältnis des Bildes für mich.

9voto

Mukesh Parmar Punkte 921

Der unten stehende Code funktioniert, um das Bild im Seitenverhältnis zu skalieren:

Bitmap bitmapImage = BitmapFactory.decodeFile("Ihr Pfad");
int nh = (int) ( bitmapImage.getHeight() * (512.0 / bitmapImage.getWidth()) );
Bitmap scaled = Bitmap.createScaledBitmap(bitmapImage, 512, nh, true);
your_imageview.setImageBitmap(scaled);

9voto

Samuh Punkte 35993

Schauen Sie sich ImageView.ScaleType an, um die Art und Weise zu kontrollieren und zu verstehen, wie das Ändern der Größe in einem ImageView erfolgt. Wenn das Bild verkleinert wird (unter Beibehaltung seines Seitenverhältnisses), besteht die Möglichkeit, dass entweder die Höhe oder Breite des Bildes kleiner wird als die Dimensionen des ImageView.

6voto

Atif Mahmood Punkte 8502

Verwenden Sie diese Eigenschaften in ImageView, um das Seitenverhältnis beizubehalten:

android:adjustViewBounds="true"
android:scaleType="fitXY"

0 Stimmen

Nur diese Antwort hat mir geholfen. Danke!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X