Есть ли возможность дать marginTop столько же, сколько высоты просмотров в xml?

У меня есть такой imageView и я пытаюсь дать ему минус запас вершины столько же, сколько его height / 2, Я могу сделать это программно, но я удивляюсь, возможно ли это и в xml, или в опубликованном процентном соотношении. Я не знаю, как это сделать или возможно?

1 ответ

- Редактировать: как подсказывает @aga, кажется, что есть способ достичь этого с помощью библиотеки поддержки процентов-

Если вы хотите использовать этот тип imageView чаще всего в вашем приложении вы можете расширить изображение и поместить маржинальный код в его onMeasure:

public class HalfMarginImageView extends ImageView {

    public HalfMarginImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        ((ViewGroup.MarginLayoutParams) getLayoutParams()).topMargin = -getMeasuredHeight() / 2;
    }
}

чтобы это работало, представление должно быть частью ViewGroup. Также убедитесь, что вы используете конструктор с AttributeSet, иначе вы не можете создать представление из xml. Йо, затем просто включите CustomView в свой макет XML, выберите HalfMarginImageView и используйте его как обычный imageView.

Другие вопросы по тегам