2017-02-01 8 views
1

私は次のようにシークバーの表示をカスタマイズしようとしています:seekbar_progress.xmlのレイヤ一覧

<SeekBar 
    android:id="@id/seek_bar_player" 
    android:layout_width="match_parent" 
    android:layout_height="6pt" 
    android:paddingLeft="0pt" 
    android:paddingRight="0pt" 
    android:paddingStart="0pt" 
    android:paddingEnd="0pt" 
    android:layout_marginBottom="-2pt" 
    android:layout_above="@id/player_container" 
    android:progressDrawable="@drawable/seekbar_progress" 
    android:thumb="@drawable/seekbar_thumb" 
    android:padding="0pt" 
    /> 

コンテンツがあり、

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@android:id/background" 
     android:bottom="2pt" 
     android:top="2pt"> 
     <color android:color="@color/seekbarBackground" /> 
    </item> 

    <item 
     android:id="@android:id/progress" 
     android:bottom="2pt" 
     android:top="2pt"> 
     <clip> 
      <color android:color="@color/seekbarProgressBackground" /> 
     </clip> 
    </item> 
</layer-list> 

とseekbar_thumb.xmlの含有量は、

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:width="2pt" 
     android:height="6pt"> 
     <color android:color="@android:color/holo_red_dark" /> 
    </item> 
</layer-list> 

このとしてAPI 25仮想デバイス上の所望の結果をもたらす: enter image description here

はしかし、Androidの5.1.1(APIレベル22)とLevovoバイブC上のその結果は奇妙です: enter image description here

これは何の理由かもしれませんか?どんな提案も高く評価されます。

+0

「pt」を使用している理由は何ですか? 'dp'ではなく? – weston

+0

@ weston実際には、いいえ... – ram

+0

これは問題ではありませんが、通常は 'dp'を使用するべきです。あなたは違いを調べる必要があります。 – weston

答えて

1

理由は、itemandroid:widthandroid:heightはAPI23まで利用できません。このようなヒントをAndroidのメーカーに目を保つ:

API23

をしたがって、古い、API22デバイス上で、それはあなたがすべてでそれらを設定していないかのように振る舞います。

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="@android:color/holo_red_dark"/> 
    <size 
     android:width="2pt" 
     android:height="6pt"/> 
</shape> 

厚さの違いはhereandroid documentationを参照してください、ダウンdpオーバーptの使用が考えられます。ここでは

seekbar_thumb.xmlファイルの代替です。

seekbar_progress.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@android:id/background" 
     android:drawable="@color/seekbarBackground"/> 
    <!-- secondary progress optional --> 
    <item android:id="@android:id/secondaryProgress"> 
     <scale 
      android:drawable="#00ffff" 
      android:scaleWidth="100%"/> 
    </item> 
    <item android:id="@android:id/progress"> 
     <scale 
      android:drawable="@color/seekbarProgressBackground" 
      android:scaleWidth="100%"/> 
    </item> 
</layer-list> 

は、そのファイル内のすべてので寸法にを指定しないでください。

使用法:

<SeekBar 
    ... 
    android:maxHeight="2pt" 
    android:progressDrawable="@drawable/seekbar_progress" 
    android:thumb="@drawable/seekbar_thumb" 
    /> 

maxHeightは親指バーの高さを制限しますが、されていません。

また、理由がない限り、dpではなくptを使用することを強くおすすめします。

+0

これは、親指がほとんど見えない理由を説明します。ありがとうございます。しかし、なぜprogressDrawableはとても厚いのですか?トップ、ボトムなどにも同様の問題がありますか?また、どのようにして親指のサイズを設定できますか? – ram

+0

これをやる方法を追加しました。 – weston

+0

これも進行領域の厚さを解決しますか? – ram