2013-04-27 127 views
2

我试图用Imageview覆盖布局上的位图。
从我能看到的。ImageView src与背景

  • 如果我使用位图(这是一个9补丁)为android:src它不会streched覆盖布局
  • 如果我用它作为android:background它得到streched

我进退两难是我想在level-list资源中使用一堆9个补丁,并使用setImageLevel()选择正确的补丁。

  • setImageLevel仅适用于android:src而不是android:background

如何获得9补丁也streched而且从级别列表选择?

+0

尝试在ImageView中使用android:scaleType =“fitXY”。 – 2013-04-27 12:08:09

+0

@SagarWaghmare我刚刚试过你的建议。它确实扩展了位图,但不是因为9贴片应该拉伸,而是将其缩放。 – ilomambo 2013-04-27 12:12:09

+0

没有什么能阻止你使用'level-list'作为ImageView的背景,然后当你需要改变等级时:'LevelListDrawable background =(LevelListDrawable)findViewById(R.id.image).getBackground() ; background.setLevel(1);' – Luksprog 2013-04-29 07:00:15

回答

2

您可以使用level-list绘制。这可绘制的将是背景的ImageView,到级别设置为需要的值(和进行正确绘制选择),你会使用:

LevelListDrawable background = (LevelListDrawable) findViewById(R.id.image).getBackground(); 
background.setLevel(1); 
1

直到出现更好的答案。让我分享我现在怎么做。
在代码中,而不是使用:

myView.setImageLevel(level); 

我只设置有背景

switch(level) { 
case 0: 
    myView.setBackgroundResource(R.drawable.bg0); 
    break;  
case 1: 
    myView.setBackgroundResource(R.drawable.bg1); 
    break; 
    . . . 
} 
0

在XML的ImageView的,尝试添加属性:

android:scaleType="fitXY"