在Android API 23之前,是否可以创建固定大小的可绘制对象?

14

这是一个单选按钮的选择器绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="@color/ColorPrimaryDark" />
                </shape>
            </item>
            <item>
                <layer-list>
                    <item android:gravity="center_vertical|left" android:left="20dp">
                        <shape android:shape="oval">
                            <size android:width="20dp" android:height="20dp" />
                            <stroke android:color="#ffffff" android:width="2dp" />
                        </shape>
                    </item>
                    <item android:gravity="center_vertical|left" android:left="25dp">
                        <shape android:shape="oval">
                            <size android:width="10dp" android:height="10dp" />
                            <solid android:color="#ffffff" />
                        </shape>
                    </item>
                </layer-list>
            </item>
        </layer-list>
    </item>
    <item android:state_checked="false">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="@color/ColorPrimary" />
                </shape>
            </item>
            <item android:gravity="center_vertical|left"
                android:left="20dp">
                <shape android:shape="oval">
                    <size android:width="20dp" android:height="20dp" />
                    <stroke android:color="#ffffff" android:width="2dp" />
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

在Android API 23中,应用时看起来像下面这样:

API 23

然而,在Android API 22中,它看起来像下面这样:

API 22

是否有一种方法在API 23之前定义固定大小的向量(即非位图)可绘制对象?

1个回答

0
尝试以下方法以编程方式缩放可绘制对象:
// Read your drawable from somewhere
Drawable dr = getResources().getDrawable(R.drawable.somedrawable);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
// Scale it to 100 x 100
Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 100, 100, true));
// Set your new, scaled drawable "d"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接