web-dev-qa-db-fra.com

Redimensionner l'élément de la liste des couches pouvant être dessiné

J'ai ceci:

<?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>

Comment puis-je redimensionner l'image drawable? Actuellement, c'est trop gros pour la forme.

11
user5188154

Je suggère d'utiliser A ScaleDrawable . Cela change essentiellement la taille de l'enfant pouvant être dessiné en utilisant

Android:scaleHeight="50%"
Android:scaleWidth="50%"

Les deux sont exprimés en pourcentage de la limite actuelle de la possibilité de tirer. 

4
frgnvola

C’est peut-être une question ancienne, mais c’est ainsi que je redimensionne un dessin dans une liste de calques

<?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>

Pas besoin d'Android: hauteur ou Android: largeur

1
adonozo

Drawable spécifie comment l'image doit être dessinée sur la toile. Vous indiquez au dessinable quelle doit être sa taille, et l’échelle ou la taille de l’image Vous pouvez setBounds sur un dessin ou redimensionnement de ImageView.

L'extrait de code suivant dessine le dessin vers un bitmap de la taille souhaitée.

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);
0
Jason Chueh