2017-03-24 2 views
2

Ich habe eine benutzerdefinierte SeekBar, die LayerList als Fortschritt Zeichnet. Auf Android-Gerät mit API < 22 scheint es gut zu funktionieren, aber auf API 22 wird der Fortschritt zeichnerisch nicht angezeigt.Seekbar Fortschritt Drawable nicht angezeigt und API 23

Hier ist mein LayerList Code:

<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"/> 
     <gradient android:startColor="#0e0e0f" android:endColor="#373938" android:angle="270"/> 
     <stroke android:width="10dp" 
      android:color="#2d3035" /> 
     <size android:height="3dp" android:width="500dp"/> 
    </shape> 
</item> 

<item android:id="@android:id/progress"> 
    <clip> 
     <shape android:shape="rectangle"> 
      <corners android:radius="20dp"/> 
      <solid android:color="#45ab12" /> 
      <stroke android:width="10dp" 
       android:color="#2d3035" /> 
      <size android:height="3dp" android:width="500dp"/> 
     </shape> 
    </clip> 
</item> 

Und hier ist mein SeekBar:

<SeekBar 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="5dp" 
       android:splitTrack="false" 

       android:thumbOffset="5dp" 
       android:id="@+id/firstAudioPositionSeekBar" 
       android:thumb="@drawable/seekbar_thumb" 
       android:progressDrawable="@drawable/seekbar_progress_bg"/> 

Hier sind Screenshots der SeekBar auf API 22 und weniger: enter image description here

enter image description here

+0

Können Sie den Code auf Ihrer Aktivität zeigen/Fragment, wo Sie diese SeekBar umgehen? – Rob

Antwort

0

Ich habe ähnliches Problem auf API 22 und habe Ihre Frage gefunden. Haben Sie dafür eine gute Lösung gefunden?
Was ich bisher mit vielen Experimenten bemerkt habe:
1. Ohne Solid auf API 22 wird die Fortschrittsleiste gezeichnet
2. Stroke-Werte werden auf API 22-Geräten anders gezeichnet als auf allen oberen APIs, was sehr seltsam ist, weil es sich nicht einmal um die Bildschirmgröße kümmert. Was zur Hölle?
3. Selbst wenn u Hub, um die ordnungsgemäße ein auf 22 API ändern - es ist noch viel viel anders auf kleinen Auflösungen (480/800) und alle anderen Bildschirmgrößen ..

ich eine Lösung Gedanken gefunden, aber ich don Ich glaube nicht, dass es das Beste ist. Ich habe 3 separate Zeichnungsdateien (Layer-Liste) erstellt: eine für API 22 mit kleiner Auflösung, eine für API 22 mit allen anderen Auflösungen und eine für alle APIs über 22. Ich entfernte den Strich von denen mit API 22 und platzierte Artikelwerte:

<item android:id="@android:id/background" android:top="15dp" android:bottom="15dp"> 

Ich habe es für 10 verschiedene Telefone mit verschiedenen Auflösungen getestet - es funktioniert perfekt, auch für große Tablets. Dennoch denke ich, dass es eine bessere Lösung dafür geben muss.

Mit freundlichen Grüßen, Max

Verwandte Themen