以编程方式设置 ImageView 的边距和其他布局属性



我正在尝试以编程方式将一些图像添加到LinearLayout中。

图像的 XML 如下所示:

<ImageView
android:id="@+id/iv_card27"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:scaleType="centerInside"
app:srcCompat="@drawable/back" />

这是我已经尝试过的 Java 代码:

ImageView card = new ImageView(this);
card.getLayoutParams().width = 50;
card.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT;
card.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
card.setImageResource(R.drawable.back);
bottomRow.addView(card);

但是我一直在努力添加边距,我也担心我设置为 50 的宽度。但它实际上应该是 50dp。我怎样才能做到这一点?

您可以使用 ViewGroup.MarginLayoutParams 、RelativeLayout.LayoutParams 或 LinearLayout.LayoutParams 来设置布局边距。

LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,      
LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);
card.setLayoutParams(params);

https://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams

您必须使用特定代码排列边距:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(xxx,xxx,xxx,xxx);
card.setLayoutParams(params);

用于设置ImageView的边距:

MarginLayoutParams marginParams = new MarginLayoutParams(image.getLayoutParams());
marginParams.setMargins(left_margin, top_margin, right_margin, bottom_margin);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
card.setLayoutParams(layoutParams);

最新更新