2017-12-14 11 views
2

私はこのようになりますと、これは、それはのようになりますどのようにされているXML描画可能を作成するために管理:SeekBarバックグラウンドのレイヤーリストドロウアブルを作成するには?

drawable

そのためのコード:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="line"> 
      <stroke android:color="@color/black" 
       android:width="3dp" /> 
      <solid android:color="#f000"/> 
     </shape> 
    </item> 

    <item android:top="1dp" android:left="360dp" android:bottom="1dp" android:right="0dp"> 
     <shape android:shape="oval"> 
      <size android:width="15dp" 
       android:height="15dp"/> 
      <solid android:color="@color/black"/> 
     </shape> 
    </item> 

    <item android:top="1dp" android:left="246dp" android:bottom="1dp" android:right="114dp"> 
     <shape android:shape="oval"> 
      <size android:width="25dp" 
       android:height="25dp"/> 
      <solid android:color="@color/black"/> 
     </shape> 
    </item> 

    <item android:top="1dp" android:left="114dp" android:bottom="1dp" android:right="246dp"> 
     <shape android:shape="oval"> 
      <size android:width="25dp" 
       android:height="25dp"/> 
      <solid android:color="@color/black"/> 
     </shape> 
    </item> 

    <item android:top="1dp" android:left="0dp" android:bottom="1dp" android:right="360dp"> 
     <shape android:shape="oval"> 
      <size android:width="25dp" 
       android:height="25dp"/> 
      <solid android:color="@color/black"/> 
     </shape> 
    </item> 

</layer-list> 

その後、私はちょうど私のシークバーに適用します:

<SeekBar 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:progressDrawable="@drawable/seekbar_style" 
/> 

しかし、それは動作しません...私はこれを取得:

それは左、上、右、DPの下側の問題かもしれないcuzを

not working

は、だから今、私はここではそのためのコードですが、結果は私が期待していものではありません....プログラムでそれをやろう.. ..

int width = seekBar.getMeasuredWidth(); 

ShapeDrawable line = new ShapeDrawable(); 
line.getPaint().setStrokeWidth(3); 
line.getPaint().setColor(Color.BLACK); 

ShapeDrawable bubble1 = new ShapeDrawable(new OvalShape()); 
bubble1.setBounds(width, 1, 0, 1); 
bubble1.getPaint().setColor(Color.WHITE); 
bubble1.setIntrinsicHeight(25); 
bubble1.setIntrinsicWidth(25); 

//bubble2, bubble3, bubble4 with different colors and then: 

Drawable[] layers = {line, bubble1, bubble2, bubble3, bubble4}; 
seekBar.setProgressDrawable(new LayerDrawable(layers)); 

not working again

誰かが正しい方向に私を指すもらえますか?私は間違って何をしていますか?

+1

レイヤードリストがあなたのドロウアブルに必要なものを与えるとは思わない。 サークルがスケーリングしているようです。 [ここ](https://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList)。 msgstr "すべての描画可能アイテムは、デフォルトでは、保持しているビューのサイズに合わせて拡大/縮小されます。" VectorDrawableはスケーリングの問題を起こさずにその背景を与えることができますが、生成するのが少し難しくなります。 – Gary99

+1

シークバーのレベルが上がっているように見えるようにするにはどうしますか?あなたのレイヤーリストドロワブルの役割が何であるかははっきりしていません。それは背景ですか、それとも何らかの形で進歩を表していますか?ダイアグラムは、手書きで描かれたものでも役立ちます。進捗ドロワブルへのあなたの現在のアプローチは正確ではありませんが、もう少し情報なしでガイダンスを出すのは難しいです。 – Cheticamp

答えて

0

してくださいこのオープンソースのGitHubリポジトリを試してみてください。あなたが望むソリューションが提供されています。

Timeline-View

あなたは、その結果を見て、以下のように取得

スクリーンショット:

enter image description here

そして、このライブラリについてもう一つは、あなたが円の色、スタイル、形状を修正にできるようにすることができます。

関連する問題