为什么ImageView setImageResource()将图像大小设置为match_parent?

时间:2015-03-19 17:28:04

标签: android android-layout android-imageview

这是XML布局。

<TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="30dp"
        android:text="@string/title"
        android:textSize="@dimen/title_textSize"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/main_text_color"/>

<ImageView
        android:id="@+id/play_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/title"
        android:layout_centerHorizontal="true"
        android:onClick="clickPlay"
        android:src="@drawable/pause"
        />

<SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginTop="15dp"
        android:background="@null"
        android:paddingBottom="8dp"
        android:paddingLeft="16dp"
        android:paddingRight="10dp"
        android:paddingTop="12dp"
        android:progressDrawable="@drawable/seek_progress"
        android:thumb="@drawable/seek_thumb"/>

<ImageView
        android:id="@+id/restart_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/play_img"
        android:layout_centerHorizontal="true"
        android:onClick="clickRestart"
        android:src="@drawable/restart"
        android:visibility="invisible"
        />

这是一个方法clickPlay()

public void clickPlay(View v) {
    if (playerCurrent != null && playerCurrent.isPlaying()) {
        playerCurrent.pause();
        playerBackground.pause();
        imgPlayPause.setImageResource(R.drawable.play);
        mVolumeSeekBar.setVisibility(View.INVISIBLE);
        imgRestart.setVisibility(View.VISIBLE);
        mIsPlaying = false;
    } else {
        playerCurrent.start();
        playerBackground.start();
        imgPlayPause.setImageResource(R.drawable.pause);
        mVolumeSeekBar.setVisibility(View.VISIBLE);
        imgRestart.setVisibility(View.INVISIBLE);
        mIsPlaying = true;
    }
}

然而,当我将图像从暂停更改为播放时,播放图像的大小为match_parent,但当我再次按下并将图像更改为暂停图像时,它会获得正常大小wrap_content。< / p>

播放和暂停图像都相同!

以下是它之前和之后的图像(使它们着色以便您更好地查看尺寸)

2 个答案:

答案 0 :(得分:0)

这不是Android SDK的问题。这是Android Emulator或Android Studio的问题。

即,当我从模拟器卸载应用程序并执行Build->Rebuild Project时,错误消失了。显然,这两者中的任何一个都没有正确刷新/res文件夹中的图像。

答案 1 :(得分:0)

我有同样的问题。 XML工作正常,直到我用setImageResource调用替换了图像。诀窍在于:

android:scaleType="fitXY"
XML中的

。不知道是什么解决了问题,但是确实可以解决。

我图像的完整布局如下:

            <ImageButton
            android:id="@+id/button_chart"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_weight="3"
            android:adjustViewBounds="false"
            android:background="@drawable/charts_button"
            android:contentDescription="Nautical Charts View"
            android:cropToPadding="false"
            android:scaleType="fitXY"/>