Android 调整图层列表项中可绘制的大小

Android 调整图层列表项中可绘制的大小,android,android-layout,android-xml,Android,Android Layout,Android Xml,我有这个: <?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="

我有这个:

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


如何调整
可绘制图像的大小?当前,它对于形状来说太大。

Drawable指定如何在画布上绘制图像。您可以告诉绘图板它应该有多大,然后它会将基础图像缩放或剪辑到相应的大小。您可以在可绘制视图上显示或调整ImageView的大小

下面的代码片段将可绘制对象绘制为具有所需大小的位图

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);
我建议使用一种新的方法。它本质上使用

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

两者都表示为可提取的当前边界的百分比

您可以尝试以下方法:

<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" />

也许这是一个又老又复杂的问题,但这就是我如何在图层列表中调整可绘制图形的大小

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


不需要android:height或android:width

什么对您有效,我仍然有一个问题
android:width
android:height
仅适用于API 23及以上版本。如何计算不同设备的
android:top
android:bottom