2016-03-28 9 views
-1

Ich möchte die Hintergrundfarbe einer Schaltfläche auf der Grundlage von Prozentsatz ändern.wie Hintergrundfarbe eine Schaltfläche auf Basis von Prozent

Ich bin 20% als immer eingabe Es sollte die Hintergrundfarbe einer Schaltfläche zeigen, die durch etwas Farbe gefüllt sie nur 20% grün grün sagen.

20% Ich meine, dass die Taste nur 20% Breite seines 100% füllen sollte. Es sieht also aus wie Seekbar. aber eigentlich wird es Knopf sein.

40% Eingang -so nur 40% Hintergrundfarbe wird mit grüner Farbe und so weiter gefüllt.

Irgendeine Idee, wie man das macht?

Hinweis: Bitte sagen Sie nicht SeekBar oder Progressbar zu verwenden.

+0

Was ist Zweck nur Taste zu bedienen? Ich kann Ihnen die Option mit der Verwendung von Suchleiste und Schaltfläche zusammen –

+0

Ich habe eine benutzerdefinierte Schaltfläche, die genaue UI-Anforderung ist – abh22ishek

+0

können Sie es tun, indem Sie benutzerdefinierte Ansicht –

Antwort

3

mit Knopf Ich sehe eine Möglichkeit, das zu tun. Aber das gleiche habe ich vorher gemacht.

So kann dies Ihnen helfen.

<RelativeLayout 
     android:id="@+id/relProgress" 
     android:layout_width="200dp" 
     android:layout_height="35dp" 
     android:background="#d7d7d7" 
     android:clickable="true" 
     > 
     <ProgressBar 
      android:id="@+id/progressDownload" 
      style="?android:attr/progressBarStyleHorizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_centerVertical="true" 
      android:progress="0" 
      android:progressDrawable="@drawable/progressbar_style" /> 

     <Button 
      android:id="@+id/txtProgressDownload" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:text="30%" 
      android:background="@android:color/transparent" 
      android:textColor="#4d5359" 
      android:textSize="15dp" /> 


</RelativeLayout> 

progressbar_style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

<item android:id="@android:id/background"> 
    <shape> 



     <solid android:color="#ccd4e0" /> 
    </shape> 
</item> 
<item android:id="@android:id/progress"> 
    <clip> 
     <shape> 

      <solid android:color="#6dd451" /> 
     </shape> 
    </clip> 
</item> 

</layer-list> 

Set Progressbar Fortschritt programmatisch

progressDownload.setProgress(20); 
+1

ich sagte klar, ich habe keine Verwendung Progressbar – abh22ishek

+1

Dies wird den gleichen Zweck dienen. Ohne das sehe ich nicht das Mögliche. Vielen Dank. –

+0

Ich muss es grammatikalisch festlegen, so dass jeder Eingabe-Prozentsatz auf die Hintergrundfarbe einer Schaltfläche gesetzt werden kann – abh22ishek

1

Hier ist meine Lösung mit cutom Ansicht

public class PrecentageButton extends View { 

    private Paint paintDefault; 
    private Paint paintFilled; 
    private RectF rectDefault; 
    private RectF rectFilled; 
    private int mWidth; 
    private int mHeight; 
    private float precentValue=20; 

    public PrecentageButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    private void init() { 

     paintDefault = new Paint(); 
     paintDefault.setColor(Color.GRAY); 

     paintFilled = new Paint(); 
     paintFilled.setColor(Color.GREEN); 


     rectDefault = new RectF(); 
     rectFilled = new RectF(); 


    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     mWidth = getWidth(); 
     mHeight = getHeight(); 


     rectDefault.set(10, 10, 200, 100); 
     rectFilled.set(10, 10, precentValue, 100); 

     canvas.drawRect(rectDefault, paintDefault); 
     canvas.drawRect(rectFilled, paintFilled); 


    } 

    public void setPrecentValue(int precentValue) { 
     this.precentValue = precentValue; 
     invalidate(); 
    } 
} 

OUTUPT

enter image description here