web-dev-qa-db-fra.com

Android - Comment changer l'épaisseur SeekBar par défaut?

J'ai ce SeekBar:

        <SeekBar
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="26dp"
        Android:id="@+id/seekbar"
        Android:visibility="gone"
        Android:maxHeight="3dp"/>

J'ai essayé de changer cette épaisseur SeekBar en utilisant maxHeight. Mais rien n'a changé. Cela ressemble à ceci:

enter image description here

Je veux changer l'épaisseur de ce SeekBar en 3dp et faire ressembler à ceci: enter image description here

Donc ma question est-il possible de changer l'épaisseur de SeekBar d'une manière ou d'une autre? Si oui, comment?

30
Joe Rakhimov

Vous devez modifier progressDrawable et thumb de SeekBar pour ajuster son épaisseur:

<SeekBar
    Android:id="@+id/seekBar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_below="@id/indSeekBar"
    Android:layout_marginTop="48dp"
    Android:progressDrawable="@drawable/seek_bar"
    Android:thumb="@drawable/seek_thumb"
    />

Ajoutez un dossier dessinable seek_bar.xml :

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@Android:id/background">
        <shape
            Android:shape="line">
            <stroke
                Android:color="@color/seek_bar_background"
                Android:width="@dimen/seek_bar_thickness"/>
        </shape>
    </item>

    <item Android:id="@Android:id/progress">
        <clip>
            <shape
                Android:shape="line">
                <stroke
                    Android:color="@color/seek_bar_progress"
                    Android:width="@dimen/seek_bar_thickness"/>
            </shape>
        </clip>
    </item>

    <item Android:id="@Android:id/secondaryProgress">
        <clip>
            <shape
                Android:shape="line">
                <stroke
                    Android:color="@color/seek_bar_secondary_progress"
                    Android:width="@dimen/seek_bar_thickness"/>
            </shape>
        </clip>
    </item>
</layer-list>

seek_thumb.xml :

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="oval">
    <size
        Android:height="@dimen/seek_bar_thumb_size"
        Android:width="@dimen/seek_bar_thumb_size"
        />
    <solid Android:color="@color/seek_bar_progress"/>
</shape>

Ajouter aux ressources de cote (modifiez ceci pour ajuster l'épaisseur):

<dimen name="seek_bar_thickness">4dp</dimen>
<dimen name="seek_bar_thumb_size">20dp</dimen>

Ajoutez des ressources de couleur:

<color name="seek_bar_background">#ababab</color>
<color name="seek_bar_progress">#ffb600</color>
<color name="seek_bar_secondary_progress">#3399CC</color>

enter image description here

26
Vaibhav Jani

Vous devriez faire comme ceci:

<SeekBar
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="20dp"
    Android:thumb="@drawable/seek"
    Android:progressDrawable="@drawable/seek_style"
    />

Le pouce est le cercle qui peut être déplacé et le progressDrasable est le style de progression.

seek_style.xml:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@Android:id/background">
        <shape>
            <corners Android:radius="5dip" />
            <gradient
                Android:startColor="#ff9d9e9d"
                Android:centerColor="#ff5a5d5a"
                Android:centerY="0.75"
                Android:endColor="#ff747674"
                Android:angle="270"
                />
        </shape>
    </item>

    <item Android:id="@Android:id/secondaryProgress">
        <clip>
            <shape>
                <corners Android:radius="5dip" />
                <gradient
                    Android:startColor="#80ffd300"
                    Android:centerColor="#80ffb600"
                    Android:centerY="0.75"
                    Android:endColor="#a0ffcb00"
                    Android:angle="270"
                    />
            </shape>
        </clip>
    </item>

    <item Android:id="@Android:id/progress">
        <clip>
            <shape>
                <corners Android:radius="5dip" />
                <gradient
                    Android:startColor="#ff0099CC"
                    Android:centerColor="#ff3399CC"
                    Android:centerY="0.75"
                    Android:endColor="#ff6699CC"
                    Android:angle="270"
                    />
            </shape>
        </clip>
    </item>
</layer-list>

seek.xml:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="oval">
    <size
        Android:width="20dp"
        Android:height="20dp"
        />
    <solid Android:color="#60f0"/>
</shape>
8
zhangxiaoping