Per me il problema è più correlato al centraggio verticale dello sfondo (tracciabile). Questo è il codice drawable imperfetto che ho usato in origine (che ha generato il problema), come suggerito dallo sviluppatore Android e altre voci StackOverflow:
<item
android:id="@android:id/background"
android:drawable="@drawable/seekbar_track"/>
<item android:id="@android:id/secondaryProgress">
<scale
android:drawable="@drawable/seekbar_progress2"
android:scaleWidth="100%" />
</item>
<item android:id="@android:id/progress">
<scale
android:drawable="@drawable/seekbar_progress"
android:scaleWidth="100%" />
</item>
Il problema qui è la prima voce, che si riferisce allo sfondo della SeekBar. Molte voci ti diranno di impostare la funzione layout_minHeight su un valore elevato per evitare una disconnessione spaziale verticale tra il pollice e la sua traccia. Questa non era la soluzione per me: se visualizzata su un tablet, lo sfondo stava ancora disegnando sulla sua dimensione più piccola basata sul telefono, quindi la traccia era sistematicamente posizionata ben al di sopra del centro della traccia SeekBar. La soluzione è quella di rimuovere questa voce nel drawable SeekBar, in modo che ora assomiglia a questo:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/secondaryProgress">
<scale
android:drawable="@drawable/seekbar_progress2"
android:scaleWidth="100%" />
</item>
<item android:id="@android:id/progress">
<scale
android:drawable="@drawable/seekbar_progress"
android:scaleWidth="100%" />
</item>
</layer-list>
Poi, nella definizione di stile del SeekBar, impostare il layout_background al drawable pista. Il mio è il seguente:
<style name="styleSeekBar" parent="@android:style/Widget.SeekBar">
<item name="android:padding">@dimen/base_0dp</item>
<item name="android:background">@drawable/seekbar_track</item>
<item name="android:progressDrawable">@drawable/abratingbar</item>
<item name="android:minHeight">@dimen/base_29dp</item>
<item name="android:maxHeight">@dimen/base_29dp</item>
<item name="android:layout_marginLeft">@dimen/base_10dp</item>
<item name="android:layout_marginRight">@dimen/base_10dp</item>
<item name="android:layout_marginTop">@dimen/base_10dp</item>
<item name="android:layout_marginBottom">@dimen/base_10dp</item>
<item name="android:scaleType">fitXY</item>
</style>
(in precedenza, l'impostazione dello sfondo era solo un colore [bianco].).
Questa è la voce nel mio layout, che utilizza sia lo stile e le drawable:
<SeekBar
android:id="@+id/seekbar_page_number"
style="@style/styleSeekBar"
android:layout_width="match_parent"
android:layout_height="@dimen/base_29dp"
android:minHeight="@dimen/base_29dp"
android:maxHeight="@dimen/base_29dp"
android:layout_marginLeft="@dimen/base_230dp"
android:layout_gravity="bottom|right"
android:progress="1"
android:max="20"
android:progressDrawable="@drawable/abseekbar"
android:thumb="@drawable/abseekbar_thumb"/>
Quindi, per riassumere, non impostare lo sfondo (traccia) funzione nel vostro SeekBar drawable personalizzato, impostarlo nella funzione layout_background del tuo stile SeekBar personalizzato. Ciò garantisce che la traccia sia sempre centrata verticalmente in una SeekBar orizzontale.
Penso che il problema sia con l'immagine stessa "music_player_playerhead". Quindi controlla la lima del pollice se il cerchio nel mezzo. –