2015-08-05 11 views
11

ho questo:Ridimensiona drawable alla voce strato-list

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="oval"> 

      <solid android:color="#000000"/> 
      <size android:width="70dp" android:height="70dp"/> 
     </shape> 
    </item> 

    <item android:drawable="@drawable/ic_person_white_48dp" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     android:layout_width="10dp" 
     android:layout_height="10dp" 
     /> 
</layer-list> 

Come posso ridimensionare l'immagine drawable? Attualmente è troppo grande per la forma.

+0

Che cosa ha funzionato per te, ho ancora un problema – Lion789

risposta

0

Drawable specifica in che modo l'immagine deve essere disegnata nell'area di disegno. Dì al disegnabile quanto dovrebbe essere grande e ridimensiona o ritaglia l'immagine sottostante alla dimensione. È possibile setBounds su un drawable o ridimensionare il ImageView.

Il seguente frammento di codice disegna il drawable su una bitmap con la dimensione desiderata.

Drawable yourDrawable = getResources().getDrawable(R.drawable.yourDrawable); 
yourDrawable.setBonnds(0, 0, width, height); 
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bitmap); 
yourDrawable.draw(canvas); 
4

Suggerirei di utilizzare A ScaleDrawable. In sostanza, modifica la dimensione del child drawable utilizzando

android:scaleHeight="50%" 
android:scaleWidth="50%" 

Entrambi sono espressi come percentuale del limite corrente del drawable.

-3

Si potrebbe provare qualcosa di simile:

<item 
    android:width="10dp" 
    android:height="10dp" 
    android:drawable="@drawable/ic_person_white_48dp" 
    android:bottom="30dp" 
    android:top="30dp" 
    android:left="30dp" 
    android:right="30dp" 
    android:gravity="center" /> 
+1

'android: width' e' android: height' funziona solo con API 23 e successive. Come è possibile calcolare solo "android: top" e "android: bottom" per dispositivi diversi? – ericn

0

Forse è e vecchia questione, ma questo è come mi ridimensionare un drawable in uno strato-list

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <layer-list> 
      <item> 
       <shape android:shape="oval"> 
        <solid android:color="#000000"/> 
        <size android:width="10dp" android:height="10dp"/> 
        <padding android:bottom="30dp" android:top="30dp" 
          android:left="30dp" android:right="30dp"/> 
       </shape> 
      </item> 
      <item> 
       <bitmap android:src="@drawable/ic_person_white_48dp"/> 
      </item> 
     </layer-list> 
    </item> 
</selector> 

Non c'è bisogno di Android: altezza o Android: larghezza

Problemi correlati