Как правильно масштабировать изображение в родительском макете? - PullRequest
0 голосов
/ 07 марта 2019

В моем приложении. У меня есть RelativeLayout, содержащий ImageView. Для RelativeLayout установлено значение MATCH_PARENT по горизонтали и WRAP_CONTENT по вертикали.

Для ImageView установлено значение WRAP_CONTENT как по горизонтали, так и по вертикали. Рисуемое изображение - это векторное изображение 24x24.

Поскольку значок слишком маленький, чтобы его можно было увидеть, я хочу удвоить его размер. Вот где проблема:

// Parent RelativeLayout
    RelativeLayout titleLayout = new RelativeLayout(MyApplication.getContext());
    titleLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
//Icon
    RelativeLayout.LayoutParams information_icon_layout = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    information_icon_layout.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

    ImageView information_icon = new ImageView(MyApplication.getContext());
    information_icon.setLayoutParams(information_icon_layout);
    information_icon.setPadding(
            getResources().getDimensionPixelSize(R.dimen.schedule_element_title_layout_padding_left),
            getResources().getDimensionPixelSize(R.dimen.schedule_element_title_layout_padding_top),
            getResources().getDimensionPixelSize(R.dimen.schedule_element_title_layout_padding_right),
            getResources().getDimensionPixelSize(R.dimen.schedule_element_title_layout_padding_bottom)
    );
    information_icon.setImageDrawable(MyApplication.getContext().getResources().getDrawable(R.drawable.ic_info_outline_black_24dp));
    information_icon.setScaleX(2);
    information_icon.setScaleY(2);
    information_icon.setAdjustViewBounds(true);

Значок масштабируется, как и ожидалось, но родительский RelativeLayout, по-видимому, не учитывает это изменение и по-прежнему рассчитывает его вертикальный размер, используя исходный размер значка (24x24). В результате значок масштабируется за пределы родительского элемента, и видна только его часть.

Мой вопрос: как я могу сказать родительскому RelativeLayout принять во внимание масштабированный размер иконки?

1 Ответ

0 голосов
/ 07 марта 2019

Используйте свойство scaletype для viewview, у него есть 3 основных свойства center, centercrop, centerinside, и если вы хотите полностью поцарапать изображение, у него также есть свойство как fit center, fit end, fit start, fitxy. Вы можете использовать это свойствов XML, а также Java.вот ссылка

scaletyper

...