シークバーの親指画像を設定しましたが、親指はシークバーの少し下に見えます。シークバーの適切な位置に親指を設定する方法。添付画像をご覧ください
<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>
おかげでSunil Kumar Saoo
MinHeightとmaxHeightをシークバーの高さと同じに設定します。例えば
<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" />
次のURLを参照してください http://qtcstation.com/2011/05/Android-how-to-fix-seekbar-bar-thumb-centering-issues/
実際、maxHeight
を1000dpのような大きな数に定義するだけで十分です。
これには、height=wrap_content
およびheight=match_parent
。
私にとって、この問題は、背景の垂直方向の中央揃え(トラック描画可能)に関連しています。 Android開発者およびその他の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>
ここでの問題は、SeekBarの背景に関連する最初の項目です。多くのエントリは、thumbとそのトラックの間の垂直方向の空間的な切断を回避するために、layout_minHeight機能を大きな値に設定するように指示します。これは私にとっては解決策ではありませんでした-タブレットで見たとき、背景はまだ小さい電話ベースのサイズに描画されていたので、トラックは一貫してSeekBarトラックの中心よりもずっと上に配置されました。解決策は、SeekBarドロアブルのこのエントリを削除することです。したがって、次のようになります。
<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>
次に、SeekBarのスタイル定義で、layout_backgroundをドローアブルトラックに設定します。私のものは次のようになります。
<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>
(以前、ここでの背景設定は単なる色[白]でした。).
これは私のレイアウトのエントリで、スタイルとドロウアブルの両方を使用しています:
<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"/>
したがって、要約すると、カスタムSeekBarのドロアブルで背景(トラック)機能を設定しないで、カスタムSeekBarスタイルのlayout_background機能で設定してください。これにより、トラックは常に水平SeekBarの垂直方向の中央に配置されます。
layout_height
シークバーのwrap_content
の代わりに match_parent