0

次のような ImageView 行を持つ Listview があります (ListView Element):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
    <ImageView
        android:id="@+id/ivThumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="6dp"
        android:layout_marginTop="6dp"
        android:src="@drawable/ic_launcher" />
    <TextView
        android:id="@+id/tvDetailsArtist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/ivThumbnail"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/ivThumbnail"
        android:maxLines="1"
        android:paddingLeft="1dp"
        android:text="placeholder"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>

getView メソッドの ListView ArrayAdapter には、次のようなものがあります (短縮):

// Check if ThumbnailFile exists
File fThumbnail = new File(
                Environment.getExternalStorageDirectory()
                        + "/folder/"), elements.get(position)
                .getThumbnailFileName());

if (fThumbnail.exists()) {
    ivThumbnail.setImageURI(Uri.parse(
            Environment.getExternalStorageDirectory()
                    + "/folder/")
            + elements.get(position).getThumbnailFileName()));
} else {
    Bitmap bm = BitmapFactory.decodeResource(context.getResources(), R.raw.no_thumbnail);   
    ivThumbnail.setImageResource(R.raw.no_thumbnail);
}

問題: res/raw (res/drawable などでもテスト済み) の *no_thumbnail.png* は、getThumbnailFileName() からの Thumbnails と同じサイズです。ただし、ImageView ではサムネイルとして大きく表示されます。テスト目的で、*no_thumbnail.png* を SD カードに入れ、他のサムネイルと同様にスケーリングしました。

4

1 に答える 1

0

最初に呼び出しgetThumbnailFileName()ているため、ソースから事前にスケーリングされた画像を取得していますが、else ステートメントではソースから画像を呼び出しており、次に に基づいてスケーリングされているため、の代わりにへのImageView呼び出しを変更すると役立つはずですgetFileName()getThumbnailFileName()

于 2013-07-15T12:26:32.917 に答える