XML可绘制位图tileMode错误?

我有我的drawable资源使用tileMode重复的问题。 在某些情况下,图像只是被拉伸,有时是正确的重复。

以下是我用来创buildbutton状态的xml文件:

用于平铺的图像可重复使用

用于平铺的图像可重复使用

^^^^^^^^^^^^^

btn_menu_item.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true" android:visible="true" android:variablePadding="true"> <!-- selected --> <item android:state_selected="true" android:drawable="@drawable/menu_item_selected"/> <!-- focused --> <item android:state_focused="true" android:drawable="@drawable/menu_item_pressed"/> <!-- pressed --> <item android:state_pressed="true" android:drawable="@drawable/menu_item_pressed"/> <!-- normal --> <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/menu_item_normal"/> </selector> 

menu_item_normal.xml

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true"> <shape android:shape="rectangle"> <gradient android:startColor="#757575" android:endColor="#929292" android:angle="90"/> </shape> </item> <item> <bitmap android:src="@drawable/menu_lines_texture" android:tileMode="repeat" android:dither="true"/> </item> </layer-list> 

menu_item_pressed.xml

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="true"> <shape android:shape="rectangle"> <gradient android:startColor="#dd4e00" android:endColor="#c64600" android:angle="90"/> </shape> </item> <item> <bitmap android:src="@drawable/menu_lines_texture" android:tileMode="repeat" android:dither="true"/> </item> </layer-list> 

请看下面的图片,我正在谈论什么。

正常状态图像正确重复按下的状态图像不重复,但拉伸

Solutions Collecting From Web of "XML可绘制位图tileMode错误?"

这是一个已知的bug,在Android 3.0中部分修复,并在ICS中完全修复。

我们在索尼的Google TV设备上遇到类似的问题,编写3.2。 我们注意到一些非常相似的背景条纹源于android:tileMode="repeat"图上使用android:tileMode="repeat"作为背景图像。

在这种情况下,解决方法是closures包含位图的视图上的硬件加速(从我们的Activity中的一个函数):

 View tile_holder = this.findViewById(R.id.tile_holder); tile_holder.setLayerType(View.LAYER_TYPE_SOFTWARE, null);