2015-12-14 7 views
7

Ho una personalizzazione seekbar che non funziona del tutto.Come posso impostare la dimensione ProgressDrawable di una barra di ricerca personalizzata per essere più piccola di ProgressBackground

Voglio il seekbar di simile a questa:

Notice the progress bar is 'skinnier' than the background

Ma questo è il più vicino sono stato in grado di ottenere

The progress bar and background are the same size

Ignorando le lievi problemi di colorazione e dimensione , il problema che sto avendo è con la dimensione verde progress. C'è un modo per renderlo più piccolo dello sfondo? Ho provato i tag size e padding nello XML e ho persino provato a giocherellare con due rettangoli uno sopra l'altro con la clip gravity, ma ancora senza fortuna.

Ecco il mio Seekbar drawable

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@android:id/background"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="20dp" /> 
      <solid android:color="@color/fofo_grey" /> 

     </shape> 
    </item> 

    <item android:id="@android:id/progress"> 

     <clip> 
      <shape android:shape="rectangle"> 
       <corners android:radius="20dp" /> 
        <solid android:color="@color/signup_green" /> 
      </shape> 
    </clip> 
    </item> 

</layer-list> 

E SeekBar nel frammento di layout

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/seekBar" 
    android:layout_below="@+id/textView6" 
    android:layout_centerHorizontal="true" 
    android:splitTrack="false" 
    android:progressDrawable="@drawable/custom_seekbar" 
    android:thumb="@drawable/thumb_seekbar" 
    android:max="100" 
    android:progress="50" 
    android:indeterminate="false" /> 
+0

SeekBar seekBar = (SeekBar) findViewById (R.id.seekBar); seekBar.setScaleY (2f); seekBar.setScaleX (2f); –

+0

Non ho fortuna qui, ho paura, questo ha reso l'intero 'Seekbar' enorme. – BlitzKraig

risposta

9
<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@android:id/background"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="20dp"/> 
      <solid android:color="@color/fofo_grey" /> 

     </shape> 
    </item> 

    <item android:id="@android:id/progress"> 

     <clip> 
      <shape android:shape="rectangle"> 
       <corners android:radius="20dp"/> 
        <solid android:color="@color/signup_green" /> 
       <stroke android:width="6dp" 
         android:color="@color/fofo_grey" /> 
      </shape> 
    </clip> 
    </item> 

</layer-list> 

sufficiente aggiungere attributo corsa in SeekBar drawable

+0

Grazie David, sono arrivato a questa soluzione nella mia risposta. Contrassegnerò il tuo come accettato, dato che eri in possesso dei soldi. – BlitzKraig

+0

Questo è lavoro per me dopo aver trascorso la mia giornata. –

5

riuscito a risolvere questo. Non posso credere che mi c'è voluto così tanto tempo per pensare alla soluzione di ...

<clip> 
      <shape android:shape="rectangle"> 
       <stroke android:color="@color/fofo_grey" android:width="6dp"/> 
       <corners android:radius="20dp" /> 
       <solid android:color="@color/signup_green" /> 
      </shape> 
     </clip> 

Aggiunta una stroke con lo stesso colore come elemento di sfondo, e ottimizzato il strokewidth per ottenere l'effetto desiderato.

Finished effect

7

progresso altezza cambiamento drawble sufficiente aggiungere android:minHeight="2dip" e android:maxHeight="2dip" a pseekbar XML

+0

Grazie. Questa soluzione ha funzionato per me <3 – ThanosFisherman

Problemi correlati