1

これを正しく機能させるのに苦労しています。と がありImageViewTextViewどちらも にありLinearLayoutます。ImageView縦横比をトリミングしたり変更したりせずに、できるだけ多くの親ビューを占めるようにしますが、そのすぐ下に TextView 用の十分なスペースを残します。これはほとんど機能していますが、画像の高さが親ビューに余分なスペースを残すのに十分小さい場合、TextViewLinearLayoutは画像のすぐ下ではなく、の一番下にのみ表示されます。

ImageView と TextView の両方の重力、重量、高さ、および幅をいじって、レイアウト パラメーターの多くの組み合わせを試しました。も使用してみましたRelativeLayoutが、結果は非常に一貫していませんでした。

私のコードの関連部分は次のとおりです。

// Create a vertical linear layout to hold the image with the caption below
// it, taking up as much space on the screen as possible
LinearLayout ll = new LinearLayout(context);
ll.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
ll.setOrientation(LinearLayout.VERTICAL);
ll.setGravity(Gravity.CENTER);

// Get the image view
ImageView img = new ImageView(context);
LayoutParams ilp = new LayoutParams(LayoutParams.MATCH_PARENT, 0);
ilp.weight = 1;
ilp.gravity = Gravity.CENTER;
img.setLayoutParams(ilp);

// Create the caption view
TextView cap = new TextView(context);
cap.setText("Example caption text");
LayoutParams clp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
clp.weight = 0;
clp.gravity = Gravity.CENTER_HORIZONTAL;
cap.setLayoutParams(clp);

// Add views to the linear layout
ll.addView(img);
ll.addView(cap);

// Load the image using an AsyncTask
loadImageTask = new LoadCachedImageTask(context, img, pos);
loadImageTask.execute("image src");

これは、テキストがまだ表示されるポイントまで画像が拡大された「適切な動作」の画像です。

良い振る舞い

これは「悪い振る舞い」の画像です。画像の上下に余裕がありますが、テキストはまだ下部にあります。

悪い振る舞い

4

3 に答える 3

0

テキストビューを画像ビューに対して相対的にする必要があります。つまり、画像が小さいか大きいかに関係なく、テキストビューのすぐ下になります。RelativeLayout は、この種の状況を簡単に処理します。RelativeLayout をコンテナとして使用することをお勧めします。デバイスのサイズや解像度が変わった場合でも、ビューを調整するのに役立ちます。次のサンプル コードを使用できます。

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/stack" />

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/image"
        android:layout_alignLeft="@id/image"
        android:text="This is image"
        android:layout_marginTop="10dp" />
</RelativeLayout>
于 2012-08-22T06:59:35.233 に答える
0

重力などをいじる必要はありません。変えるだけ

LayoutParams clp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

あなたのテキストビューの

LayoutParams clp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);

うまくいけば、それはあなたの問題を解決するでしょう:)乾杯:)

于 2012-08-22T06:32:19.197 に答える