5

Questo mi sta facendo impazzire. Mi piacerebbe poter ridimensionare a livello di codice un'icona disegnabile con un vettore xml al fine di utilizzarla in un ImageView.Android come ridimensionare (ridimensionare) un'icona vettoriale xml a livello di programmazione

Questo è quello che ho fatto finora, che non sta funzionando

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

L'icona vettore ic_marker non viene ridimensionata. Mantiene sempre i valori di larghezza e altezza hardcoded.

Qualche idea?

risposta

2

È possibile modificare la larghezza e l'altezza della vista di anteprima a livello di codice. Dato che i drawable vettoriali manterranno la qualità originale dell'immagine, ciò farà sì che l'output desiderato si verifichi.

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

Grazie. Mentre questa soluzione funziona alla grande, speravo in un'alternativa in cui ridimensionassi il mio drawable direttamente e poi lo posizionassi in imageview senza scherzare con i parametri di imageview. Farò una ricerca su di esso e se questo è impossibile per ottenere il modo che voglio, accetterò la tua risposta – ThanosFisherman

+0

Vorrei raccomandare di utilizzare diversi file PNG come drawable tipici, con dimensioni diverse per dispositivi diversi. Strada da percorrere :) –

+4

yeap Lo so, ma il mio punto qui è usare i drawable vettoriali in modo che non abbia bisogno di avere file PNG con dimensioni diverse – ThanosFisherman

0

Attualmente sto affrontando lo stesso problema.

Sto provando qualcosa di simile, perché ViewParent ha effettivamente impostato l'altezza in modo esplicito, quindi utilizzo match_parent e imposta i margini. Tuttavia, non funziona tutto il tempo, perché uso semplicemente questa vista in un viewholder per RecyclerView ... Inoltre ho notato che a volte vedo una versione ingrandita con artefatti, a volte full size, a volte ci sono margini e più grandi margini ... Ma potrebbe ancora funzionare per te, se lo usi in uno scenario più semplice.

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