2010-03-17 17 views
8

Gibt es eine Möglichkeit, die Hintergrundleiste Bild in der SeekBar Android Widget entfernen?Android Remove SeekBar Hintergrund

Ich möchte nur einen Schieberegler ohne Fortschrittsbalken dahinter anzeigen.

Remove this

Jede Hilfe?

Antwort

4

Nun, ich löste mein eigenes Problem.

den Hintergrund zu entfernen, müssen Sie eine leere ziehbar erstellen und an die progressDrawable gesetzt:

satBar.setProgressDrawable(invisibleBackground); 

es auf null Einstellung nicht zu funktionieren scheint.

3

Haben Sie versucht setBackgroundDrawable(null)?

+0

Ich habe. Der Hintergrund, der gezeichnet werden kann, ist tatsächlich hinter der Bar selbst. Ich brauche eine Möglichkeit, die Leiste zu löschen (und auch das Bild des Schiebereglers zu ändern) – GuyNoir

+0

und wie kann ich danach auf die Initiale wiederhergestellt werden? tks – Paul

+1

@Paul: Versuchen Sie zuerst 'getBackground()' aufzurufen, speichern Sie das Ergebnis irgendwo und stellen Sie es später mit 'setBackgroundDrawable()' wieder her. Trotz der nicht-parallelen Namen gibt 'getBackground()' ein 'Drawable' zurück. – CommonsWare

2

Eine Möglichkeit, dies zu tun, wäre, die Farbe des Fortschrittsbalkens in die Hintergrundfarbe zu ändern. Sie müssen ein benutzerdefiniertes Layout verwenden.

<SeekBar 
    android:layout_width="350px" 
    android:layout_height="25px" 
    android:layout_margin="30px" 
    android:layout_x="60px" 
    android:layout_y="185px" 
    android:id="@+id/seekbar" 
    android:progressDrawable="@drawable/myprogress" 
/> 

Eine benutzerdefinierte Layout wird unten gegeben - mit den Farben zu spielen, um:

<?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> 
    <corners android:radius="5dip" /> 
    <gradient 
      android:startColor="#ff9d9e9d" 
      android:centerColor="#ff5a5d5a" 
      android:centerY="0.75" 
      android:endColor="#ff747674" 
      android:angle="270" 
    /> 
</shape> 
</item> 


<item 
android:id="@android:id/progress" 
> 
<clip> 
    <shape> 
     <corners 
      android:radius="5dip" /> 
     <gradient 
      android:startColor="#9191FE" 
      android:centerColor="#9191FE" 
      android:centerY="0.75" 
      android:endColor="#9191FE" 
      android:angle="270" /> 
    </shape> 
</clip> 
</item> 

27

es eine einfachere Möglichkeit ist, die benötigt keinen neuen ziehbar zu schaffen. Stellen Sie einfach die folgenden in Ihrer XML-Definition

android:progressDrawable="@android:color/transparent" 

Oder wenn Sie es in Ihrem Code zu tun:

mySlider.setProgressDrawable(new ColorDrawable(android.R.color.transparent)); 
+0

Bessere Lösung als @GuyNoir Lösung darüber, dass ein künstliches "unsichtbares Zeichen" erstellt werden muss – Guy

+0

Nur eine Anmerkung: Sie können # 0000 nicht verwenden, aber @android: color/transparent funktioniert. – sidon

+0

Aber dies entfernt die horizontale Linie auch auf Holo-Light-Thema. Ich möchte das behalten. – lalitm

0

eine XML-Datei seekbar_progress.xml erstellen und legen Sie sie in drawable folder.Here Streifen ist ein Bild, nehmen Sie ein Bild und legen Sie es in drawable Ordner.

seekbar_progress.xml

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

    <item> 
    <clip> 
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/stripes" 
     android:tileMode="repeat" 
     android:antialias="true" 
     android:dither="true" 
     android:filter="false" 
     android:gravity="left" 
    /> 
    </clip> 
</item> 
</layer-list> 

Jetzt in Ihrem main xml-Datei, die seekbar Code mit, nehmen Sie ein Bild und speichern Sie in drawable folder.here seekbar ist ein Bild.

<SeekBar 
      android:id="@+id/seekbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/seekbar" 
      android:progressDrawable="@drawable/seekbar_progress"/>