2010-11-29 16 views
0

私のアプリケーションでは、異なる高さ(リンゴ、ワイン、魚)の3つの画像ビューを持つレイアウトがあり、一番下に並んでいます。レイアウトの高さは一定です。このレイアウトはhdpi画面上ではよく見えますが、mdpiで同じイメージを使用したいと思います。問題は、mdpiではいくつかの画像ビューが縮小され、画像ビュー間の比率が同じではないことです。だから、もしワインがスケールダウンされれば、リンゴはワインボトルのように背が高いかもしれません。これを避ける最善の方法は何ですか?私は、実行時に画像(同じ高さ)を同じ高さに設定することを考えました。そして、それらはすべて縮尺され、その割合は維持されます。これはポーズ可能ですか?私はこれがはっきりしていることを望むありがとうございました。異なる画面の画像ビュー間のサイズの比率を維持する

答えて

4

だけ設定:ImageViewsのそれぞれに

android:scaleType="fitCenter" 

を。彼らは高さに関係なく比例してサイズを変更します。

EDIT:あなたは三つの画像(魚、リンゴ、ボトル)を持っているとしましょう、重み付けの問題を明確にするために、我々はF、Aそれらを呼び出すだろう、とB.

は、我々はそれを知っているとしましょう:

Fは、だから、Aは半分であるべきであるFは、Bと同じ高さでなければならないことを知っている はB.

の半分の身長であるべきであるA.
と同じ高2倍であるべきですBの高さ.FとBに等しい重みを与えることができます(1)、Aは半分の重み(0.5)である。単純化するために、2を掛けて整数を与えることができます.FとBの重みは2、Aの重みは1です。このように、LinearLayoutをどのような高さに設定しても、画像はそれぞれその他。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="200dp" 
    android:orientation="vertical" 
    > 
    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="2" 
     android:src="@drawable/fish" 
     android:scaleType="fitCenter" 
     /> 
    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:src="@drawable/apple" 
     android:scaleType="fitCenter" 
     /> 
    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="2" 
     android:src="@drawable/bottle" 
     android:scaleType="fitCenter" 
     /> 
</LinearLayout> 

私はこれがあなたが求めていると信じていますが、私は間違いかもしれません。

+0

画像ビューが縮小された場合、他のビューも同じように縮小され、互いに比例して縮小されます。そのうちの1つが高さ200と別の50を持ち、最初のものが100にスケーリングされている場合、もう1つは25にスケーリングする必要があります。このようにして、「リンゴ」はまだ「ボトル」よりも小さくなります。 – Gratzi

+0

3つの画像すべてを実行時に作成し、1つの画像ビューのみを使用して、3の代わりにその合成画像を使用すると、解決策になる可能性があります。しかし、私はまだこれを行う方法を知らない。 – Gratzi

+0

layout_weight属性を使用してみます。 3つのImageViewをLinearLayoutに入れ、それぞれに特定の重みを与えます(例えば、ボトルがリンゴの2倍の大きさの場合は、ボトルに2の重みを与え、リンゴには1の重みを与えます)。 – kcoppock

関連する問題