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);