在我的应用程序中,我正在以编程方式创建一个 RelativeLayout 并设置 topMargin。在 Nexus 5X 上,设置了边距,但在 LG G4 上,没有边距。
public static PictureView createPictureView(final Context context) {
PictureView newPicture = new PictureView(context);
int pictureHeight = context.getResources()
.getDimensionPixelSize(R.dimen.picture_view_height);//200dp
final LinearLayout.MarginLayoutParams params = new LinearLayout.MarginLayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
pictureHeight);
params.topMargin = context.getResources()
.getDimensionPixelSize(R.dimen.activity_vertical_margin);//16dp
newPicture.setLayoutParams(params);
return newPicture;
}
父布局始终为 LinearLayout:
<LinearLayout
android:id="@+id/pictureContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingEnd="@dimen/activity_horizontal_margin"
android:paddingStart="@dimen/activity_horizontal_margin"/>
我试过设置 LinearLayout divider,但它不适用于两种设备。
我发现这篇文章,建议使用父母的 LayoutParams,但它不适用于这里,因为我已经在使用正确的 LayoutParams。