0

スケーリングされた相対レイアウトに画像を設定しています。ただし、画像を設定すると、レイアウトの配置規則が破られます。画像は左側に揃える必要がありますが、ずれています。画像が大きいほど、画像は左端から離れて配置されます。画像の配置に依存するテキストなどの他のレイアウト アイテムも移動します。スケーリングされた画像は、その配置とは別に見栄えがします。

画像は 200 ピクセルで、バーの高さの実際のサイズは 70 dp です。画像のサイズを変更できましたが、なぜこれが起こるのか知りたいです。

編集 - 画像を動的に設定しようとしましたimage.setImageResource(R.drawable.placeholder);

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:background="@drawable/footer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <ImageView
            android:id="@id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/placeholder"
            android:layout_alignParentLeft="true"
            />
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="test"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/icon"
            android:layout_above="@id/username"/>

    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@id/username"
            android:text="user name test"
            android:layout_marginBottom="15dp"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/icon"
            android:layout_alignParentBottom="true"/>
    <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/play_media_btn_toggle"
            android:layout_marginTop="15dp"
            android:id="@id/play"
            android:layout_alignParentRight="true"
            android:textOn=""
            android:textOff=""/>
</RelativeLayout>
4

2 に答える 2

0

画像を動的に設定すると、画像のサイズが変更されたときにホルダーが画像に合うように設定されないため、片側 (幅または高さ) に奇妙な不均衡なギャップが生じます。ギャップを避けるために、これを動的に行う必要があります。

編集:これは、画像を(幅に合わせて)スケーリングし、それをホルダーに設定してそれに応じてホルダーのサイズを変更する方法の例です。この方法で、ホルダーと画像の幅を制御し、ImageView(ホルダー)のスケールタイプはセンターです。

float scaleFactor = (float)rssLayout.getWidth() / (float)bitmap.getWidth();     
    bitmap = Bitmap.createScaledBitmap(bitmap, (int)(bitmap.getWidth() * scaleFactor), (int)(bitmap.getHeight() * scaleFactor), true);
    bannerImage.setImageBitmap(bitmap);
    LayoutParams params = (LayoutParams) bannerImage.getLayoutParams();             
    params.width = bitmap.getWidth();
    params.height = bitmap.getHeight();
    bannerImage.setLayoutParams(params);

これが役に立ち、あなたの仕事を楽しんでくれることを願っています

于 2013-05-21T10:37:44.700 に答える
0

を に設定するadjustViewBoundsと、問題が解決する場合がありますImageViewtrueデフォルトでImageViewsは、コンテンツが拡大縮小されたときに境界を拡大縮小しないでください。これにより、めちゃくちゃなレイアウトが作成されます。

于 2013-05-22T07:39:48.493 に答える