0

シークバーをカスタマイズする必要があります。これを実現するために、layer-listXML ファイルを使用して、シークバーの背景として設定しています。
には@android:id/backgroundビットマップを、secondaryProgressprogressにはシェイプを使用しています。
これは XML バックグラウンド ファイルです。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@android:id/background">
        <bitmap
            android:src="@drawable/progressbar_bg"
            android:tileMode="repeat" />

    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#B2B2B2" />

                <corners android:radius="5dp" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="#E00072" />

                <corners android:radius="5dp" />
            </shape>
        </clip>
    </item>

</layer-list>

そして、SeekBar を宣言する方法は次のとおりです。

<SeekBar
                android:id="@+id/seekBar1"
                android:thumb="@drawable/progressbar_thumb"                
                android:progressDrawable="@drawable/custom_seek_bar"
                android:background="@drawable/progressbar_bg"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_toLeftOf="@id/video_total_time"
                android:layout_toRightOf="@id/video_time_played" />

問題は、SeekBar の高さが新しい高さに縮小されないことです。これは、背景画像の高さと同じになると予想しています。代わりに、空白で満たされた領域が表示されます。

ここに画像の説明を入力

空白がどこから来て、それを取り除く方法を知っていますか?

4

1 に答える 1

0

@android:id/backgroundこの問題は、アイテムにビットマップの代わりに 9 パッチを使用することで解決されました。

 <item android:id="@android:id/background">
        <nine-patch
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:dither="true"
            android:src="@drawable/progressbar_backg" />
 </item>
于 2012-07-27T13:02:46.727 に答える