为什么 ImageView setImageResource() 将图像大小设置为 match_parent?
Why does ImageView setImageResource() sets image size to match_parent?
这是 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
.
播放和暂停图像完全相同!
这是它前后的效果图(将它们着色以便您更好地查看尺寸)
这不是 Android SDK 的问题。这是 Android Emulator 或 Android Studio 的问题。
即,当我从模拟器中卸载该应用程序并执行 Build->Rebuild Project
时,错误消失了。显然,这两个都没有正确刷新 /res
文件夹中的图像。
我有同样的问题。 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"/>
这是 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
.
播放和暂停图像完全相同!
这是它前后的效果图(将它们着色以便您更好地查看尺寸)
这不是 Android SDK 的问题。这是 Android Emulator 或 Android Studio 的问题。
即,当我从模拟器中卸载该应用程序并执行 Build->Rebuild Project
时,错误消失了。显然,这两个都没有正确刷新 /res
文件夹中的图像。
我有同样的问题。 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"/>