Android:为什么在缩小后我的ImageView两侧都有白色填充?

时间:2017-03-09 10:11:00

标签: java android layout imageview

我知道其他地方已经提到了这类问题。但我不明白为什么我在以下具体情况下遇到问题。这是一个非常简单的布局:

 <RelativeLayout
        android:id="@+id/headerLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#D0D0D0"
        android:orientation="horizontal"

        >


        <ImageView
            android:id="@+id/appImageView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"                
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_alignBottom="@+id/appNameTextView"
            android:layout_alignTop="@+id/appNameTextView"
            android:scaleType="centerInside"
            android:src="@drawable/common_ic_googleplayservices"
            android:background="#FF0000"
            />


        <TextView
            android:id="@+id/appNameTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/appImageView"
            android:text="Here is some text"
            android:textColor="#000000"

            />

    </RelativeLayout>

结果如下:

enter image description here

common_ic_googleplayservices是一个缩小的方形图像。为什么我有填充(见红色区域)=&gt;我的形象不再是正方形。

如何解决问题? (请在给出答案之前快速测试:))

谢谢!!!

3 个答案:

答案 0 :(得分:1)

试试这个,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/iv"
        android:layout_width="30dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignTop="@+id/tv"
        android:layout_alignBottom="@+id/tv"
        android:src="@drawable/common_ic_googleplayservices" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/iv"
        android:gravity="center_vertical"
        android:text="TextView"
        android:textSize="30dp"

        />

</RelativeLayout>

答案 1 :(得分:0)

使用此

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

答案 2 :(得分:0)

使用RelativeLayout或任何其他默认布局无法直接执行您要执行的操作,因此您需要PercentRelativeLayout。但我建议不要为此类任务包含任何其他依赖项。

步骤1:让您的用户界面如下

<RelativeLayout
    android:id="@+id/headerLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#D0D0D0" >

    <ImageView
        android:id="@+id/appImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:background="#FF0000"
        android:src="@drawable/common_ic_googleplayservices" />

    <TextView
        android:id="@+id/appNameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@id/appImageView"
        android:paddingStart="10dp"
        android:text="Here is some text"
        android:layout_centerVertical="true"
        android:textColor="#000000" />

</RelativeLayout>

步骤2:在JAVA代码中进行以下更改。

final ImageView imageView = (ImageView) findViewById(R.id.image_view);
    imageView.post(new Runnable() {
        @Override
        public void run() {
            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
            layoutParams.width = layoutParams.height;
            imageView.setLayoutParams(layoutParams);
        }
    });