Как установить android:layout_marginBottom Programm?
Чтобы перетащить изображение на экран, я создал свой собственный класс:
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);
}
my 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 по коду?
2 ответа
Решение
Попробуйте использовать 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);
Попробуйте использовать 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);
}