2016-11-24 3 views
0

Um deutlich zu machen, will ich auch 20% linken Rand bei 80% des Höchstwertes Ziehen zu verhindern. Die Reichweite ist (von 20% bis 80%).Android seekbar wie in Bereich des Fortschritts Wert blockieren Ziehen

Ich muss nur wissen, ist es möglich, sie machen aus bestehenden Verfahren klar und einfach.

Screenshot

enter image description here

+1

Es gibt keine Methode, warum don‘ Möchten Sie 'onProgressChanged' verwenden? Es ist die Art und Weise zu tun –

+0

Mit Sicht auf der Oberseite des seekbar hinzufügen und setzen Sie sich auf anklickbare = true auch Linearlayout verwendet das 20% – zombie

+0

Alberto Méndez können Sie bieten mir Beispiel zu erhalten, wenn Sie es in der Fliege ... –

Antwort

1

Sie tun können es mit onProgressChanged mit einem sehr grundlegenden calcul ationen. Wenn der Mindestwert 0 ist und der Höchstwert 200 ist, möchten wir die ersten und letzten 20% begrenzen. In onProgressChanged Methode, die Sie gerade:

// I think this two variables should be out of the method 
int limit = ((20 * 200)/100); 
int maxValue = seekBar.getMax(); 
if(seekBar.getProgress() >= (maxValue - limit)){ 
    seekBar.setProgress(maxValue); 
}else if(seekBar.getProgress() <= limit){ 
    seekBar.setProgress(limit); 
} 

Diese on the fly getan wurde, ist es nicht getestet und wahrscheinlich ist etwas nicht in Ordnung, aber das ist die Idee

+0

müssen nur minValue überhaupt keine Notwendigkeit entfernen. in Zeile: seekBar.setProgress (minValue); muss seekBar.setProgress (limit) sein; –

+0

Ja, Sie haben Recht, und dies auch für die '' else if Bedingung, wenn ich –

+0

sonst nicht falsch bin, wenn Ok ist. es ist nicht gleichzeitig möglich, max und min zu sein ... –

0

wie in der Antwort erwähnt here bezüglich

Sie können den Minimalwert nicht definieren. Es ist 0.

Wenn Sie Maximalwert festlegen möchten, können Sie es tun

von xml

<SeekBar 
    android:id="@+id/seekBar1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="your_max_value"/> 

java

seekBar = (SeekBar)findViewById(R.id.seekbar_id); 
seekBar.setMax(your_max_value);