2016-10-27 3 views
1

Я пытаюсь центрировать рисованное изображение с некоторым дополнением с обеих сторон для использования в качестве логотипа заставки. Проблема заключается в том, что он растягивается по всему экрану или игнорирует любые дополнения, если я использую gravity.Как масштабировать и центрировать рисованный внутренний слой-андроид?

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:drawable="@color/grey_3"/> 

<item android:gravity="top|center_horizontal|center_vertical" android:drawable="@drawable/zc_logo_r" 
     android:top="100dp" 
     android:left="200dp" 
     android:right="200dp" 
     android:layout_margin="100dp" 
    > 
</item> 

Я попытался с помощью растрового изображения, android:gravity="fill_horizontal" и различные другие предложения по SO с тем же результатом.

Как я могу масштабировать и центрировать изображение в моем xml?

ответ

2

Для всех, кто может столкнуться с этой проблемой, я решил это решить, изменив квадратное изображение в папках hdpi, mdpi, xhpi, xxhpi и xxxhdpi. Вместо того, чтобы изменять размер прямоугольного изображения, которое было слишком большим и искажало его.

+1

Лучше установить силу тяжести не для предмета, а для самого растрового изображения. В противном случае его можно было бы растянуть на устройствах, предшествующих Lollipop –

0

Возможно, проще всего превратить ваше изображение в девять патчей.

Проблема, с которой вы сталкиваетесь, заключается в том, что в списке слоев нет встроенной идеи о ее размере. Границы устанавливаются, когда они помещаются внутри контейнера. Атрибуты xml устанавливаются во время компиляции, поэтому трудно получить динамические значения внутри xml drawable.

Если вы можете использовать ImageView, то вы можете установить свой drawable в атрибуте src и использовать padding, marginins и scaleType, чтобы управлять положением масштабированием drawable.

Смежные вопросы