LayerDrawable绘制相同大小的drawable?

时间:2014-10-23 11:30:59

标签: android android-drawable

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

当我同时绘制两者时,符号图标会调整得更大,以适应与背景图标相同的大小。

这是我的代码

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

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

    LayerDrawable layerDrawableSelected = new LayerDrawable(drawableSelectedIcons);

2 个答案:

答案 0 :(得分:4)

R.drawable.symbol是一个位图?比它作为BitmapDrawable加载。它有引力。根据重力,位图位于drawable的边界内。尝试将重力设置为Gravity.CENTER。

你可以这样做:

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

drawableSelectedIcons[1] = bd;

答案 1 :(得分:1)

考虑到你的布局中只有这个Image,这应该足以满足你的需要:

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

编辑:要将其添加到您的布局中,请使用:

ImageView imageView = new ImageView(this);
    imageView.setBackgroundResource(R.drawable.background);
    imageView.setImageResource(R.drawable.symbol);
    imageView.setScaleType(ScaleType.CENTER);
    FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.CENTER;
    addContentView(imageView, params);