1

我很难让它正常工作。我有一个ImageView和一个TextView,都在一个LinearLayout。我希望在ImageView不裁剪或更改纵横比的情况下尽可能多地占用父视图,但为其正下方的 TextView 留出足够的空间。我有这个主要工作,但是当图像的高度足够小以在父视图中留下额外的空间时,TextView 只出现在 的最底部LinearLayout,而不是图像的正下方。

我尝试了许多布局参数的组合,摆弄了 ImageView 和 TextView 的重力、重量、高度和宽度。我什至尝试使用 a 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

无需过多地摆弄重力等等;只是改变

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

你的 textview 到

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

希望它能解决你的问题:)干杯:)

于 2012-08-22T06:32:19.197 回答
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

你为什么不只使用drawableTop的属性TextView

 <TextView
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:drawableTop="@drawable/your_drawable"
      .... />

你可以按照你想要的方式设置可绘制的填充

于 2012-08-22T17:52:57.510 回答