2011-09-28 12 views
17

私のdrawableリソースがtileModeリピートを使用する問題があります。場合によっては、画像が伸びているだけで、時には正しく繰り返されることもあります。XML drawableビットマップtileModeバグ?

次私はボタンの状態を作成するために使用するXMLファイルです:タイルに使用

画像描画可能に

Image drawable used for tile repeated

を繰り返し^^^^^^^^^ ^^^^

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> 

まさに私が話しているかの下の画像を参照してください。

Normal state image properly repeated Pressed state image not repeated but stretched

答えて

22

これは既知のバグ、一部のAndroid 3.0で修正され、完全にICSに固定されています。

+0

感謝を!このための回避策はありますか? – Jona

+8

代わりにコードからタイルモードを設定します。 –

+0

私はまだXoomの3.2でこの問題を発見しています。それをコードで設定すると、それが修正されます。 –

2

SonyのGoogle TVデバイスで3.2と同じような問題が発生していました。背景画像としてビットマップにandroid:tileMode="repeat"を使用したことに由来する非常に似た背景ストライピングに気付きました。この場合

、修正がそう(私たちの活動の機能から)のようなビットマップに含まれるビューのハードウェアアクセラレーションをオフにすることでした。この上ご返信用

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

私はこれを保証することができます。 Lollipopを実行している古い携帯電話にも問題はありますが、タイルモードをプログラムで設定しても機能しませんでしたが、これは(レイアウトファイルを含む) – batterj2

関連する問題