ユーザーが次のボタンを押したときに表示されている画像を更新することになっているimageviewを含むフレームレイアウトがあります(スライドショーを考えてください)。このようにこの画像ビューに入れたいすべての画像は同じ寸法です。アクティビティの開始時にimageviewによって表示される最初の画像は、res / drawable-hdpiディレクトリにあり、他の画像はアセットディレクトリにあります。問題は、これらの画像はすべて同じサイズですが、imageviewにスワップした画像が最初の画像よりも小さく表示されることです。
レイアウトパラメーターに関しては、フレームレイアウトのlayout_widthとlayout_heightがwrap_contentに設定されており、imageviewも同様です。scaleTypeパラメーターをすべての可能な値に設定しようとしましたが、同じ結果が得られます。したがって、res / drawable-hdpiに保存されている画像とアセットのスケーリングが異なる場合を除いて、この動作は発生しません。
では、ユーザーがこれらの画像を循環するときに、画像ビューのサイズを維持するための最良のアプローチは何でしょうか。
これがフレームレイアウトとイメージビューのXMLです
<FrameLayout
android:id="@+id/coverLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" >
<ImageView
android:id="@+id/coverImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="false"
android:scaleType="fitCenter"
android:src="@drawable/coverImage" />
</FrameLayout>
これが私のimageviewに新しい画像をロードする私のコードです
_coverImageView = (ImageView) findViewById(R.id.coverImageView);
...
...
if (loadNewImage) {
AssetManager assetMgr = getAssets();
InputStream stream;
try {
stream = assetMgr.open("covers/" + _coverImageName);
Drawable coverDrawable = Drawable.createFromStream(stream, _coverImageName);
_coverImageView.setImageDrawable(coverDrawable);
}
catch (IOException ex) {
System.out.println(ex);
}
}