ImageView在横向模式下变得越来越大

时间:2017-03-10 09:53:05

标签: android imageview aspect-ratio

即使在横向模式下,我也希望保持我的Imageview的宽高比。即使我使用scaleType,它也看起来超级拉伸:fitXY和adjustBounds这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="24dp"
    android:layout_gravity="center">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        android:id="@+id/image" />
        />
   </FrameLayout>

 </LinearLayout>

更新: 我使用滑行来设置我的imageview。它主要是640 X 330图像

       Glide.with(this)
            .load("http://www.web-cars.com/lambo_sb/IMG_3410.jpg")
            .into(imageView);

4 个答案:

答案 0 :(得分:0)

使用PercentFrameLayout https://developer.android.com/reference/android/support/percent/PercentFrameLayout.html

为纵向和横向配置创建两个布局文件

肖像

<android.support.percent.PercentFrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

  <ImageView
      app:layout_aspectRatio="136%"
      app:layout_widthPercent="100%"
      android:layout_gravity="center"
      tools:ignore="ContentDescription"
      tools:src="@color/accent"
      />

</android.support.percent.PercentFrameLayout>

风景

<android.support.percent.PercentFrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

  <ImageView
      app:layout_aspectRatio="136%"
      app:layout_heightPercent="100%"
      android:layout_gravity="center"
      tools:ignore="ContentDescription"
      tools:src="@color/accent"
      />

</android.support.percent.PercentFrameLayout>

答案 1 :(得分:0)

试试这个,

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:padding="24dp">

            <ImageView
                android:id="@+id/image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:src="@drawable/placeholder" />
            />
        </FrameLayout>

    </LinearLayout>

答案 2 :(得分:0)

如果你不想在AndroidManifest.xml文件中设置横向模式到活动android:screenOrientation="portrait",那么这可能会有所帮助,所以你不要进入横向模式

答案 3 :(得分:0)

我认为当您不确定来自服务器的图像大小时,这将解决您的问题。

Glide.with(this)
                .load("http://www.web-cars.com/lambo_sb/IMG_3410.jpg")
                .centerCrop()
                .override(200, 200)
                .into(imgView);

- 图像调整大小和裁剪 您不确定从远程服务器加载的图像的大小

that what will be the size of the image . so in this code snippet image is resized to 200X200 and center cropped.


Glide.with(this)
        .load("IMAGE URL HERE")
        .placeholder(R.drawable.placeholder)
        .error(R.drawable.imagenotfound)
        .override(200, 200);
        .centerCrop();
        .into(imageView);

享受编码和分享知识

链接:

[http://www.androidtutorialshub.com/glide-image-loading-library-for-android-tutorial/][1]