16

最大高さImageViewと最大幅の両方が に設定されてい100ます。下の図は明らかに正方形ではありませんが、想像力を働かせてください ;)

図1:

╔══════════════════════════════════════════════╗
║ ImageView    ╔══════════════╗                ║
║              ║              ║                ║
║              ║ Actual image ║                ║
║              ║              ║                ║
║              ║              ║                ║
║              ║              ║                ║
║              ╚══════════════╝                ║
╚══════════════════════════════════════════════╝

とにかく、1:1 の比率を持たない に設定しようとするとBitMapImageView画像は図 1 のように配置さImageViewれます。以下2。

図 2:

╔══════════════════════════════════════════════╗
║══════════════╗                               ║
║              ║                               ║
║ Actual image ║                               ║
║              ║                               ║
║              ║                               ║
║              ║                               ║
║══════════════╝                               ║
╚══════════════════════════════════════════════╝

以下の XML で私の ImageView を見ることができます。maxHeight、実行時maxWidthadjustViewBounds設定されます。

<ImageView android:id="@+id/someImage"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textName"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:paddingRight="4dp"
    />

これは、RelativeLayout違いがある場合です。

4

7 に答える 7

19

これを試して

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/home_icon" 
     android:scaleType="fitStart"/>

それは私にとって役に立ちます。

于 2011-10-09T11:06:51.753 に答える
7

デフォルトでは、最初のスケッチのように、scaleType は "fitCenter" / ScaleType.FIT_CENTER です。


2 番目のスケッチに示すように、ドローアブルを ImageView の左側に配置するには:

xml ビューで:

<ImageView 
   android:scaleType="fitStart" />

またはJavaクラスで:

ImageView image_view = [create new ImageView or getView from xml];
image_view.setScale(ScaleType.FIT_START);


ドローアブルをImageViewの右側に揃えるには

xml ビューで:

<ImageView 
   android:scaleType="fitEnd" />

またはJavaクラスで:

ImageView image_view = [create new ImageView or getView from xml];
image_view.setScale(ScaleType.FIT_END);
于 2012-10-04T18:32:02.307 に答える
3

ビューに drawableLeft を追加してみませんか。

このように (layout.xml で): android:drawableLeft="@drawable/yourDrawableId" -または- このように (Java コードで): yourView.setCompoundDrawablesWithIntrinsicBounds(yourDrawableId,0, 0,0);

View コンテナ内でこのドローアブルのパディングなどを制御できます (詳細なレイアウトの微調整を制御するため)。

于 2011-09-12T15:58:19.523 に答える
2

私は同じ問題に直面しました、そしてこれは私がそれを解決した方法です:

最終的に、ImageViewと同じ大きさのRelativeLayout内にImageViewを配置し、Relative Layoutの重力を必要な値に設定しました(あなたの場合は左)。

また、adjustViewBoundsをtrueに設定して、ImageViewがImageと同じ大きさになり、RelativeLayout内に配置されるようにします。

あまりエレガントなソリューションではありませんが、機能します...

于 2011-06-06T09:26:46.117 に答える
1

何かが正しくありません。ImageView はXMLとwrap_contentその両方で定義されているため、常にビットマップと同じスペースのみを占有する必要があります。layout_widthlayout_height

ImageView に を追加してandroid:background、ビットマップよりも実際に幅が広く、不要なセンタリングが発生していることを確認してください。

<ImageView android:id="@+id/someImage"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textName"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:paddingRight="4dp"
    android:background="#F00"
    />

背景色が透明なビットマップでテストして、ImageView から赤い背景が見えるようにします。ソースビットマップが縦長の場合は縦長の長方形、幅が広い場合は横長の長方形が表示されると思います。ソース ビットマップが正方形の場合にのみ、正方形が表示されます。あなたの質問から、図 1 のケースは決して見られるべきではありません。

代わりに、ImageView のサイズを常に 100x100 にしたいと思ったことはありませんか? 次に、次のコードを使用できます(他の人がすでに正しく述べているようfitStartに、属性に注意してください):scaleType

<ImageView android:id="@+id/someImage"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/textName"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:paddingRight="4dp"
    android:background="#F00"
    android:scaleType="fitStart"
    />

を設定する必要はありません。これが必要な場合はmaxHeight、Java コードから。maxWidthadjustViewBounds

于 2011-11-05T03:09:41.220 に答える
1

試す

android:gravity="left"

重力は、ビューがコンテンツを配置する方法です。テキストの場合は TextView で、画像の場合はおそらく ImageView で動作します。

編集:

ImageView を含む FrameLayout を作成してみてください。ImageView の幅と高さを「wrap_content」に設定し、親の重力を「左」に設定します。

それ以外の場合は、ビューに onDraw を実装し、任意の位置に画像を描画します。

于 2010-05-04T02:40:47.123 に答える
1

私が使う:

android:scaleType="fitCenter"

ここに文書化されています。幸運を!

編集:悪いことに、ImageViewで画像を中央に配置していることに気づきませんでした(私の最初の読書では、別のビュー内でImageViewを中央に配置するのに問題があると思いました)。今はよくわかりませんが、とにかく ScaleType を見ることができます ^_-

于 2010-05-04T02:58:37.083 に答える