0

アイデアは、写真を表示するか、何も定義されていない場合はそれを象徴する小さなアイコンを表示することです。

レイアウトで次の ImageView を定義しました。

        <ImageView
            android:id="@+id/imgPic"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:contentDescription="@+string/strImgPic"
            android:paddingRight="10dip"
            android:paddingTop="10dip"
            android:saveEnabled="false"
            android:src="@drawable/pic_icon" />

そのため、ImageView は「アイコン」PNG で事前に初期化されています。

それをロードするコード:

try {
imgURL = vinfo.getString("mainpic_url");
    if (imgURL.length() > 1) {
   imgURL = getString(R.string.urlPicsFull) + imgURL;
   ImageView imgPic = (ImageView) findViewById(R.id.imgPic);
   ImageDownloader img = new ImageDownloader();
   img.download(imgURL, imgPic);
    }
 } catch (..) {
(..)

ImageDownloader() は基本的に、画像を非同期的に取得する以外に何もしません。ただし、問題は、画像がない場合 ( imgURL.length()==0 )、アイコンがレイアウトの空の正方形の中央に非常に大きな「境界線」で表示されることです。

画像を親ビューの幅に縮小(または拡大)したいのですが、アイコンはそのまま表示します(幅と高さ約90ディップ)。

それを実現する方法について何か提案はありますか?

4

1 に答える 1

1

のandroid:scaleTypeタグを確認してくださいImageView。あなたの場合、追加する場合

android:scaleType="fitXY"

レイアウトのImageView定義で、画像がサイズに調整されますImageView。このようなもの:

<ImageView
        android:id="@+id/imgPic"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:contentDescription="@+string/strImgPic"
        android:paddingRight="10dip"
        android:scaleType="fitXY"
        android:paddingTop="10dip"
        android:saveEnabled="false"
        android:src="@drawable/pic_icon" />

ただし、これはアスペクト比を維持しないため、画像が歪む可能性があります。それが望ましくない場合は、android:scaleType提供されたリンクでタグが取ることができる他の値を確認してください。

于 2012-07-26T10:55:50.160 に答える