我在使这个正常工作方面遇到了很多麻烦。我在ImageView
中都有TextView
和LinearLayout
。我希望ImageView
尽可能多地占用父视图而不裁剪或更改宽高比,但为其下面的TextView留下足够的空间。我主要使用它,但是当图像的高度足够小以在父视图中留下额外的空间时,TextView仅出现在LinearLayout
的最底部,而不是图像的下方。 / p>
我尝试了很多布局参数组合,摆弄了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");
这是“良好行为”的图像,其中图像被放大到文本仍然可见的位置:
这是“不良行为”的图像,图像上方和下方都有空间,但文字仍然位于底部:
答案 0 :(得分:0)
不需要因重力和所有因素而过分捣乱;只需改变
LayoutParams clp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
LayoutParams clp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
希望它能解决你的问题:)欢呼:)
答案 1 :(得分: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>
答案 2 :(得分:0)
为什么不使用drawableTop
TextView
属性
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:drawableTop="@drawable/your_drawable"
.... />
您可以按照您想要的方式设置可绘制填充