2011-04-01 14 views
2

こんにちは私はシークバーをカスタマイズしようとしています。ここで進捗状況のSeekbarとInsetDrawable

は私の問題だ:@drawable

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background" 
    android:drawable="@drawable/seekbarbg"> 
</item> 
<item android:id="@android:id/progress" 
    android:drawable="@drawable/sb_progress"> 
</item> 
</layer-list> 

main.xml

... 
    <SeekBar android:id="@+id/seekBar1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:thumb="@drawable/seekbarthumb" 
       android:progressDrawable="@drawable/sb2" 
       android:minHeight="45dip" 
       android:maxHeight="45dip" 
      ></SeekBar> 
    ... 

sb2.xml

すべてが正常に動作しますが、sb_progressが誤った位置にありました。

私は2つの解決策を持っています。 sb_progressの位置を変更するか、Photoshopでsb_progressを編集し、透過ピクセルを追加して修正します。位置何かを変えるの良い方法を試みることによって

は間違っていた:

を私はinset要素が、結果suxxを追加sb2.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background" 
    android:drawable="@drawable/seekbarbg"> 
</item> 
<item android:id="@android:id/progress" > 
    <inset 
    android:drawable="@drawable/sb_progress" 
    android:insetTop="11dip" 
    android:insetBottom="11dip" 
    android:insetLeft="11dip"> 
    </inset> 
</item> 
</layer-list> 

にいくつかの行を追加しました。位置は正しいが、進行状況はもはやアニメーション化されていない。 sb_progress.pngは常にフルで描画され、親指で止まらない。

私は助けが必要です!これはバグですか、透明なピクセルを追加する必要がありますか?ではない

InsetDrawableはDrawableのサブクラスです。シークバーがInsetDrawableでもう動作しないのはなぜですか?

java.lang.Objectの ↳android.graphics.drawable.Drawable ↳android.graphics.drawable.InsetDrawable

答えて

6

のような(私は、これは古い質問ですけど、誰もが検索エンジンを介してこれを発見した場合私がしました)あなたがする必要があるのは、引出しだけでなく挿入図にも「クリップ」を追加することだけです。

<item android:id="@android:id/progress" > 
    <clip> 
    <inset 
     android:insetRight="11dp" 
     android:insetLeft="11dp"> 
     <shape> 
      <solid android:color="#343434"/> 
     </shape> 
    </inset> 
    </clip> 
</item> 
関連する問題