在我的应用中,我以编程方式创建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"/>
我已尝试过setting LinearLayout divider,但它并不适用于这两种设备。
我找到this post,建议使用父版的LayoutParams,但这里不适用,因为我已经使用了正确的LayoutParams。