Android, как программно изменить размер (масштабировать) значок вектора xml

Это сводит меня с ума. Я хотел бы иметь возможность программно изменить размер нарисованного значка xml вектора, чтобы использовать его в ImageView.

Это то, что я сделал до сих пор, который не работает

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_marker,null);
drawable.setBounds(0,0,512,512);
imageVenue.setImageDrawable(drawable);

Значок вектора ic_marker не изменяется Он просто сохраняет жестко запрограммированные значения ширины и высоты каждый раз.

Есть идеи?

2 ответа

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

ImageView iv = (ImageView) findViewById(R.id.imgview);
int width = 60;
int height = 60;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,height);
iv.setLayoutParams(params);

В настоящее время я сталкиваюсь с той же проблемой.

Я пытаюсь что-то вроде этого, потому что ViewParent фактически установил высоту явно, поэтому я использую match_parent и установить поля. Это не всегда работает, потому что я просто использую это представление в держателе для RecyclerView... Также я заметил, что иногда я вижу уменьшенную версию с артефактами, иногда полноразмерными, иногда есть поля и больше поля... Но это все еще может работать для вас, если вы используете его в более простом сценарии.

mImageViewFront.setImageDrawable(vectorDrawable);
final int paddingLR = mImageViewFront.getWidth() / 4;
final int paddingTB = mImageViewFront.getHeight() / 4;
LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.setMargins(paddingLR, paddingTB, paddingLR, paddingTB);
mImageViewFront.setLayoutParams(params);
Другие вопросы по тегам