J'ai défini l'image du pouce d'une barre de recherche, mais mon pouce semble peu en dessous de la barre de recherche. Comment placer le pouce à la bonne position d'une barre de recherche. Jetez un oeil sur l'image ci-jointe
<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>
Merci Sunil Kumar Saoo
Définissez minHeight et maxHeight comme la hauteur de la barre de recherche. par exemple
<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" />
Voir l'url suivante http://qtcstation.com/2011/05/Android-how-to-fix-seekbar-bar-thumb-centering-issues/
En fait, il suffit de définir maxHeight
à un grand nombre comme 1000dp.
Cela présente également l'avantage de travailler avec height=wrap_content
et height=match_parent
.
Pour moi, le problème est plus lié au centrage vertical de l'arrière-plan (piste dessinable). C'est le code drawable imparfait que j'ai utilisé à l'origine (qui a généré le problème), comme suggéré par Android et autres entrées 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>
Le problème ici est le premier élément, qui se rapporte à l'arrière-plan du SeekBar. De nombreuses entrées vous indiqueront de définir la fonction layout_minHeight sur une valeur élevée pour éviter une déconnexion spatiale verticale entre le pouce et sa piste. Ce n'était pas la solution pour moi - vu sur une tablette, l'arrière-plan dessinait toujours à sa plus petite taille basée sur le téléphone - donc la piste était toujours positionnée bien au-dessus du centre de la piste SeekBar. La solution consiste à supprimer cette entrée dans le dessin de SeekBar, elle ressemble donc à ceci:
<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>
Ensuite, dans la définition de style de SeekBar, définissez le layout_background sur le tracé de la piste. Le mien ressemble à ceci:
<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>
(Auparavant, le paramètre d'arrière-plan n'était qu'une couleur [blanc].).
Voici l'entrée de ma mise en page, qui utilise à la fois le style et les dessinables:
<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"/>
Donc, pour résumer, ne définissez pas la fonction d'arrière-plan (piste) dans votre dessin SeekBar personnalisé, définissez-la dans la fonction layout_background de votre style SeekBar personnalisé. Cela garantit que la piste est toujours centrée verticalement dans une barre de recherche horizontale.
J'ai simplement résolu le pouce de la barre de recherche horizontale mal alignée en définissant layout_height
de la barre de recherche pour wrap_content
au lieu de match_parent