personalizado - seekbar discrete android studio
cómo solucionar seekbar-bar-thumb-centrando-problemas (3)
De hecho, es suficiente para definir maxHeight
a un gran número como 1000dp.
Esto también tiene la ventaja de trabajar con height=wrap_content
y height=match_parent
.
He establecido una imagen de pulgar de una barra de búsqueda, pero mi pulgar se ve un poco debajo de la barra de búsqueda. Cómo establecer el pulgar en la posición correcta de una barra de búsqueda. Echa un vistazo a la imagen adjunta
<SeekBar android:id="@+id/PP_Player_SeekBar"
android:thumb="@drawable/music_player_playerhead"
android:paddingLeft="8dip"
android:paddingRight="8dip"
android:progressDrawable="@drawable/seekbar_drawable_xml_background"
android:layout_width="236dip"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"
android:layout_marginTop="47dip"></SeekBar>
Gracias Sunil Kumar Saoo
Establezca minHeight y maxHeight iguales que la altura de la barra de búsqueda. p.ej
<SeekBar
android:id="@+id/PP_Player_SeekBar"
android:thumb="@drawable/music_player_playerhead"
android:paddingLeft="8dip"
android:paddingRight="8dip"
android:progressDrawable="@drawable/seekbar_drawable_xml_background"
android:layout_width="236dip"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"
android:layout_marginTop="47dip"
android:minHeight="11dip"
android:maxHeight="11dip" />
Consulte la siguiente url http://qtcstation.com/2011/05/android-how-to-fix-seekbar-bar-thumb-centering-issues/
Para mí, el problema está más relacionado con el centrado vertical del fondo (pista dibujable). Este es el código drawable defectuoso que utilicé originalmente (que generó el problema), según lo sugerido por el desarrollador de Android y otras entradas de :
<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>
El problema aquí es el primer elemento, que se relaciona con el fondo de SeekBar. Muchas entradas le indicarán que configure la característica layout_minHeight en algún valor grande para evitar una desconexión espacial vertical entre el pulgar y su pista. Esta no era la solución para mí: cuando se miraba en una tableta, el fondo todavía se dibujaba en su tamaño más pequeño basado en el teléfono, por lo que la pista se colocaba constantemente bien por encima del centro de la pista SeekBar. La solución es eliminar esta entrada en el Drawable SeekBar, por lo que ahora se ve así:
<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>
Luego, en la definición de estilo de SeekBar, establezca el layout_background en la pista dibujable. El mío se ve así:
<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>
(Anteriormente, la configuración de fondo aquí era solo un color [blanco]).
Esta es la entrada en mi diseño, que utiliza tanto el estilo como los elementos dibujables:
<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"/>
Por lo tanto, para resumir, no establezca la función de fondo (pista) en el Drawable SeekBar personalizado, configúrelo en la función layout_background de su estilo SeekBar personalizado. Esto garantiza que la pista esté siempre centrada verticalmente en una SeekBar horizontal.