在方向变化上按比例调整图像大小

时间:2014-09-15 08:22:25

标签: android

我在活动中有一个片段,其中包含RelativeLayoutImageViewTextView以下布局:

 <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout 
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <TextView
                android:id="@+id/txtLabel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/avaImage"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="8dp"
                android:text="Available"
                android:textSize="26sp" />

            <ImageView
                android:id="@+id/avaImage"
                android:layout_width="487dp"
                android:layout_height="238dp"
                android:layout_alignParentTop="true"
                android:layout_marginTop="20dp"
                android:layout_centerHorizontal="true"
                android:scaleType="centerInside" />

        </RelativeLayout>

这就是我以编程方式设置图像源的方式:

ImageView image = (ImageView) rootView.findViewById(R.id.avaImage);
image.setImageDrawable(getResources().getDrawable(R.drawable.availability_green));

我的问题是,如何缩小图像大小以使其适合横向模式下的屏幕?图像应该缩小到足以使文本出现在边界内?这就是我想要实现的目标

Potrait:

enter image description here

风景:

enter image description here

1 个答案:

答案 0 :(得分: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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin" >

<ImageView
    android:id="@+id/avaImage"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:scaleType="fitCenter"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/txtLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Available" />

</LinearLayout>