2011-07-08 10 views
6

2つのImageViewがあるレイアウトがあります。各画像は固定されたアスペクト比を持ちます。たとえば、最初の画像は320x160、2番目は320x320です。レイアウトは垂直に揃えられます。私はこの2つの画像を一緒に接着し、画面の辺(幅または高さ)の1つに合わせて縮尺を変え、反対側をプロポーショナルに縮尺します。 scaleType = fitCenterを使用しようとしましたが、アスペクト比の異なる電話機では画像が一緒ではなく、その間に黒い領域があるという問題があります。 画面の比率(480x854と480x800)が異なるためレイアウトを使用できないようですが、レイアウトは同じ縮尺のままにしておく必要があります。異なる電話機で固定アスペクト比のアンドロイドレイアウトスケーリング

何か助けていただければ幸いです。ここで

は、今の私のレイアウトです:

<LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<ImageView android:src="@drawable/im_menu" 
android:adjustViewBounds="true" 
android:scaleType="fitCenter" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal|top" 
android:layout_weight="0.7" 
> 
</ImageView> 
<ImageView android:src="@drawable/im_field" 
android:adjustViewBounds="true" 
android:scaleType="fitCenter" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:layout_gravity="center_horizontal|top" 
android:layout_weight="0.3" 
> 
</ImageView> 
</LinearLayout> 

答えて

2

あなたはあまりにも相対値でレイアウトの重みを使用することができます。たとえば、30%のフィールドと70%のフィールドが必要な場合は、子ビューのウェイトを0.3と0.7で設定し、子には幅と高さを指定しないでください。 開発者ガイド(先端部分)で説明されています。

developer guide - linear layout

また、あなたはRelativeLayoutの代わりのLinearLayoutを使用する必要があります。

を使用でき
+0

ため

<ImageView ... android:layout_height="fill_parent" ...> 

adjustViewBoundsここでも、効果は同じです。私が説明しようとしたように、480x800の比率= 1.66と480x854の比率= 1,77であるため、親のサイズを使用することはできませんが、レイアウトを常に1.5の比率に保ち、画面の最小サイズを満たす必要があります。 –

+0

@北方キャプテン:絶対値をピクセル単位で使用しないでください。上記のように相対値を試してください。位置合わせの部分は重さだけでは達成できません。重力に目を向けるか、必要に応じてRelativeLayoutを使用する必要があります。 –

+0

layout_widthとheightを子供から削除すると、それらは消えます。 –

6

:例えば

android:adjustViewBounds="true" 

と高さにfill_parentを設定し、私の詳細

関連する問題