2015-10-09 18 views
17

Próbowałem wykonać niestandardowy SeekBar. To ma mieć zaokrąglone rogi. Nawet postęp SeekBar powinien mieć zaokrąglone rogi po obu stronach. Nie potrzebuję kciuka. Coś takiego.Niestandardowy kciuk SeekBar pokazujący niechciane tło

Custom Seekbar with round corners

Aby to osiągnąć, zrobiłem plik layer-list xml, nazwany custom_seekbar.xml następująco:

<?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="#F0E9DC" /> 
     </shape> 
    </item> 

    <item android:id="@android:id/secondaryProgress"> 
     <clip> 
      <shape android:shape="rectangle"> 
       <corners android:radius="20dp" /> 
       <solid android:color="#F0E9DC" /> 
      </shape> 
     </clip> 
    </item> 

    <item android:id="@android:id/progress"> 
     <clip> 
      <shape android:shape="rectangle"> 
       <corners android:radius="20dp" /> 
       <solid android:color="#E38F71" /> 
      </shape> 
     </clip> 
    </item> 

</layer-list> 

I do czynienia z ruchomym rogiem, myślałem o za pomocą kręgu kręgu o wysokości równej wysokości SeekBar. Oto thumb.xml:

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

    <size android:height="16dp" 
     android:width="16dp"/> 

    <corners android:radius="20dp"/> 

    <solid android:color="#E38F71"/> 

</shape> 

A ja pokazując SeekBar takiego w mojej działalności:

<SeekBar 
     android:layout_width="250dp" 
     android:layout_height="16dp" 
     android:layout_centerInParent="true" 
     android:progressDrawable="@drawable/custom_seekbar" 
     android:thumb="@drawable/thumb" /> 

Jedynym problemem jest kciuk. Nie wyświetla się zgodnie z oczekiwaniami. Ma niechcianego tła takiego:

Custom Seekbar thumb with unwanted background

Jeżeli ustawić przezroczystą kciuk, postęp nie jest okrągła więcej. Próbowałem nawet użyć kształtu kciuka o kształcie Oval. Ktoś proszę mi powiedzieć, gdzie się źle wybieram? Lub jeśli jest jakiś inny sposób, mogę osiągnąć pożądane rezultaty. Każda pomoc będzie naprawdę doceniona.

+1

utworzyć niestandardowy 'Drawable' klasę i używać go przez wywołanie' setProgressDrawable' jak w [tym] (http://stackoverflow.com/a/ 21060826/2252830) odpowiedź – pskink

+0

Utwórz plik thumb.xml przy użyciu listy warstw – Pavya

+0

@ user3676184 czy możesz pokazać mi, jak to zrobić. Próbowałem wielu rzeczy, ale nie mogłem dostać tego, czego chcę. – Anjani

Odpowiedz

51

dodanie android:splitTrack="false", rozwiąże problem. Chciałbym również skorzystać android:shape="oval" zamiast rectangle z zaokrąglonymi rogami, za thumb.xml

+0

Użyłem kształtu "owalnego". Miał ten sam problem.Dlatego próbowałem z prostokątnym prostokątem narożnym. Wciąż nic się nie zmieniło. Więc właśnie to opublikowałem. – Anjani

+3

czy możesz spróbować dodać do paska wyszukiwania 'android: splitTrack =" false "'? – Blackbelt

+0

To jest niesamowite. Tylko jedna linia i mój problem zniknął! Dziękuję bardzo. Uratowałeś mi godziny! Zmień odpowiedź, aby ją zaakceptować. – Anjani

Powiązane problemy