我很难让它正常工作。我有一个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");
这是“良好行为”的图像,其中图像被放大到文本仍然可见的点:
这是“不良行为”的图像,图像上方和下方都有空间,但文本仍留在底部: