Android LayerDrawable以相同的大小绘制可绘制对象?

Android LayerDrawable以相同的大小绘制可绘制对象?,android,android-drawable,Android,Android Drawable,嗨,我正在尝试绘制两个不同大小的图标,其中一个图标只是背景边界类型,另一个图标是符号 当我同时绘制这两个图标时,符号图标的大小会变大,以适应与背景图标相同的大小 这是我的密码 drawableSelectedIcons[0] = r.getDrawable(R.drawable.background); drawableSelectedIcons[1] = r.getDrawable((R.drawable.symbol); LayerDrawable layerDraw

嗨,我正在尝试绘制两个不同大小的图标,其中一个图标只是背景边界类型,另一个图标是符号

当我同时绘制这两个图标时,符号图标的大小会变大,以适应与背景图标相同的大小

这是我的密码

  drawableSelectedIcons[0] = r.getDrawable(R.drawable.background);

    drawableSelectedIcons[1] = r.getDrawable((R.drawable.symbol);

    LayerDrawable layerDrawableSelected = new LayerDrawable(drawableSelectedIcons);

考虑到您的布局中只有该图像,这应该足以满足您的需求:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/background"
        android:scaleType="center"
        android:src="@drawable/symbol" />

</LinearLayout>

R.drawable.symbol
是位图吗?然后将其加载为BitmapDrawable。它有重力。根据重力,位图位于可绘制边界内。试着把重力设为重心

您可以这样做:

BitmapDrawable bd = (BitmapDrawable) r.getDrawable((R.drawable.symbol); // be careful with this cast
db.setGravity(Gravity.CENTER)

drawableSelectedIcons[1] = bd;

您是否尝试更改可绘制比例值?您是如何通过编程实现的?背景图像有点像200x200,而符号图像只有120x120,所以为什么我必须手动缩放/调整其大小?您只有两层?为什么不在ImageView中将较大的图像设置为背景,将较小的图像设置为src?是的,只有两层需要动态渲染
BitmapDrawable bd = (BitmapDrawable) r.getDrawable((R.drawable.symbol); // be careful with this cast
db.setGravity(Gravity.CENTER)

drawableSelectedIcons[1] = bd;