2014-10-23 3 views
3

Привет, я пытаюсь нарисовать две значки разных размеров, один из значков - только тип фона, а другой значок - символ.LayerDrawable рисует чертежи одинакового размера?

Когда я рисую оба, значок символа становится более крупным, чтобы соответствовать размеру значка фона.

Вот мой код

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

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

    LayerDrawable layerDrawableSelected = new LayerDrawable(drawableSelectedIcons); 
+0

Вы пытаетесь изменить Drawable значение масштаба? – joao2fast4u

+0

Как сделать это программно? фоновое изображение - это что-то вроде 200x200, а изображение символа - только 120x120, так как же мне нужно масштабировать/изменять его размер вручную? – jonney

+0

У вас есть только два слоя? – joao2fast4u

ответ

1

Учитывая, что вы просто есть, что изображение в макете, это должно быть достаточно для того, что вы хотите:

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

Edit: Для добавления его динамически к вашему макет, использование:

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); 
+0

Нужно динамически отображаться – jonney

+0

@jonney См. Мой обновленный ответ – joao2fast4u

3

R.drawable.symbol - растровое изображение? Затем он загружается как BitmapDrawable. Он имеет гравитацию. В зависимости от гравитации растровое изображение располагается внутри границ чертежа. Попробуйте установить гравитацию на Gravity.CENTER.

Вы можете сделать это следующим образом:

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

drawableSelectedIcons[1] = bd; 
Смежные вопросы