Wednesday, 16 June 2021

Android: How to programatically change the width of an ImageView without resizing its image?

I am trying to programatically change the width of an ImageView without resizing the image. The ImageView originally shows the entire image, but when the width of the image is decreased, a portion of the image should be cut off, like this:

enter image description here

However, when my code reduces the width of the ImageView from 350dp to 200dp, the image is automatically resized instead:

enter image description here

How do I ensure that the ImageView does not resize the image when I decrease its width? Below is my code:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/photo_1_preview"
        android:layout_width="350dp"
        android:layout_height="350dp"
        android:adjustViewBounds="false"
        android:background="@drawable/android"/>
</LinearLayout>

MainActivity.java:

package com.example.changingimageviewwidth;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Reduce the width of the image preview box
        ImageView imagePreviewBox = findViewById(R.id.photo_1_preview);
        imagePreviewBox.getLayoutParams().width = 250;
    }
}


from Android: How to programatically change the width of an ImageView without resizing its image?

No comments:

Post a Comment