0

要在屏幕上拖动图像,我创建了自己的类:

private class CustomImageView extends AppCompatImageView

在构造函数中,我想设置参数:

public CustomImageView(Context context) {
    super(context);
    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
    params.bottomMargin = 50;
    this.setScaleType(ImageView.ScaleType.CENTER_CROP);
    this.setLayoutParams(params);
    this.setWillNotDraw(false);
}

我的activity_main.xml:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.eleizo.firstapplication.MainActivity">   
</RelativeLayout>

我想实际上是这样:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.eleizo.firstapplication.MainActivity">

    <ImageView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:layout_marginBottom="50dp"
        />
</RelativeLayout>

为什么字符串"params.bottomMargin = 50"不起作用?我试图设置params = new RelativeLayout.LayoutParams(val1,val2),但没关系。如何android:layout_marginBottom通过代码在 RelativeLayout 中设置?

4

2 回答 2

0

尝试使用MarginLayoutParams而不是LayoutParams.

if( params instanceof MarginLayoutParams )
{
    ((MarginLayoutParams) params).bottomMargin = 50;
    ((MarginLayoutParams) params).leftMargin = 10;

}

所以你的代码看起来像

public CustomImageView(Context context) {
    super(context);
    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);

    if( params instanceof MarginLayoutParams )
    {
    ((MarginLayoutParams) params).bottomMargin = 50;
    }
    this.setScaleType(ImageView.ScaleType.CENTER_CROP);
    this.setLayoutParams(params);
    this.setWillNotDraw(false);

}

于 2017-07-28T07:24:34.920 回答
0

在相对布局中添加视图时尝试使用 LayoutParams。ViewGroup.addView(View, LayoutParams)

像这样的东西。

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
params.bottomMargin = 50;

relativeLayout.addView(new CutomImageView(context), params);
于 2017-07-28T07:35:09.717 回答