Frage

Wer weiß, wie ein SeekBar des Minimalwert definieren? Ist das in der XML-Layout getan oder muss ich es programmatisch definieren?

Im Grunde muss ich 0-0,2

mein Minimalwert ändern
War es hilfreich?

Lösung

  

Hallo, weiß jemand, wie eine definieren   SeekBar den Minimalwert?

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

  

Im Grunde muss ich mein Minimum ändern   Wert 0-0,2

Wenn Sie den Wert zu erhalten, fügt 0.2 zu.

Andere Tipps

Hier ist, was ich pflegt android:max für max / min Bereich für ein SeekBar erhalten.

mSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    int progressChanged = minimumValue;

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        progressChanged = minimumValue+ progress;
    }
});

Sie werden also den Bereich minimum to minimum+max erhalten;

Um den Maximalwert in xml, Verwendung max=(desiredMax-min) gesetzt;

Der Minimalwert muss 0 für das SeekBar Objekt in Java (das heißt, es kann nicht geändert werden), aber dies ist, wie die erforderliche Aussehen und Leistung zu erhalten.

Angenommen, Sie möchten Ihre min 5 und Ihre max sein zu 100 ...

Deshalb haben Sie eine Reihe von 95, so dass Sie die SeekBar mit einem Maximalwert von 95 einzurichten benötigen würden.

Wenn Ihr seekbar UI-Etiketten hat, würden Sie sie 5 machen (min) und 100 (max).

So würde das Layout XML so etwas wie ...

sein
<LinearLayout
    android:id="@+id/sampleSizeLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/batchDurationSecsLayout"
    android:orientation="vertical"
    android:visibility="visible" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/sample_size" />

    <SeekBar
        android:id="@+id/sampleSizeSeekBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:max="95" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:visibility="visible" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:gravity="left"
            android:text="5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:gravity="right"
            android:text="100" />

    </RelativeLayout>

</LinearLayout>

So jetzt können Sie die 5 Korrektur vorstellen, wie dieser ...

final SeekBar sampleSizeSeekBar = (SeekBar)findViewById(R.id.sampleSizeSeekBar);
final int sampleSizeSeekBarCorrection = 5; //e.g., 95 <--> 100
int realValueFromPersistentStorage = appObj.getSampleSize(); //Get initial value from persistent storage, e.g., 100
sampleSizeSeekBar.setProgress(realValueFromPersistentStorage - sampleSizeSeekBarCorrection); //E.g., to convert real value of 100 to SeekBar value of 95.
sampleSizeSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

    int val = sampleSizeSeekBar.getProgress();

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        val = progress + sampleSizeSeekBarCorrection; //e.g., to convert SeekBar value of 95 to real value of 100
    }

    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    public void onStopTrackingTouch(SeekBar seekBar) {
        try {
            appObj.saveSampleSize(val); //Save real value to persistent storage, e.g., 100
            appObj.makeToast("Sample size set to " + val);
        }
        catch(Exception e) {
            Log.e(LOG_TAG, "Error saving sample size", e);
            appObj.makeToast("Error saving sample size: " + e);
        }
    }
});

Diese Lösung gibt Ihrem seekbar die richtige min, max und Skala auf der Benutzeroberfläche und die Position des Steuer wird nicht ‚Sprung‘ nach rechts, wenn der Benutzer gleitet es den ganzen Weg nach links.

Im Grunde habe ich die Größe + 10 hinzugefügt, die automatisch die min auf 10 gesetzt werden Sie Sie es einrichten ändern, die min. Wert.

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    int siz = size + 10;
    txtViewFontSize.setTextSize(siz);

    Toast.makeText(this, String.valueOf(siz), Toast.LENGTH_SHORT).show();

}

Meine Lösung, die funktioniert für mich in Ordnung ist:

    @Override 
 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if (progress <= SOME_LIMIT) {
        seekBar.setProgress(SOME_LIMIT);
    } else {
       // DO SOMETHING
    }

} 

Sie können keine Fortschritte in float weil seekbar.getProgress () liefert immer Integer-Wert. Folgende Code Textview-Wert auf 0,2 gesetzt, wenn seekbar Wert 0 ist Sie minimumVal entsprechend Ihrer Anforderung ändern kann.

int minimumVal = 0;

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {


                if (progress >= minimumVal) {
                    seekBar.setProgress(progress);
                    textView.setText(progress);
                } else {
                    seekBar.setProgress(minimumVal);
                    textView.setText("0.2");
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

In api Versionen> = 26 Sie können nun min xml-Attribut SeekBar hinzufügen:

android:min="0.2"

Ich habe diese einfache Bibliothek, es ist nicht viel, aber es kann Ihnen etwas Zeit sparen.

https://github.com/joaocsousa/DoubleSeekBar

Sie können auf diese Weise versuchen zu tun:

int yourMinProgress = 10;

private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener =
    new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {

            if (progress < yourMinProgress) {
                seekBar.setProgress(10);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    };

Dieser Code funktioniert gut für mich !!!

SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setMax(100);
seekBar.setProgress(40);
seekBar.setOnSeekBarChangeListener(seekBarChangeListener);

SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
        if(progress <= 40){
            seekBar.setProgress(40);
        }
        if(progress >= 40) {
            pgr_status.setText(String.valueOf(progress));
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
};

ich endlich einen Weg gefunden, um Satz seekBar Minimalwert , nur gesetzt Ihr setOnSeekBarChangeListener wie folgt aus:

int minimumValue = 10; // your minimum value
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        // you can set progress value on TextView as usual
        txtProgress.setText(String.valueOf(progress));

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        if(seekBar.getProgress() < minimumValue)
            seekBar.setProgress(minimumValue);

    }
});

Hope, das hilft:)

Hier ist, wie ich tat dies mit Kotlin:

view.controlTextSize.setOnClickListener {

        textSizeControl.textSizeControlSlider.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{

            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
                var progress = progress
                if (progress < 10){
                    progress = 10
                    seekBar?.progress = progress
                }

                view.content.textSize = progress.toFloat()
                prefs.edit().putFloat("ContentTextSize", progress.toFloat()).apply()
            }

            override fun onStartTrackingTouch(seekBar: SeekBar?) {}

            override fun onStopTrackingTouch(seekBar: SeekBar?) {}
        })
        textSizeControl.show()
    }

Wenn Sie com.android.support:preference-v7 verwenden, SeekBarPreference bereits ein Verfahren setMin(int).

Rufen Sie einfach, dass in onCreatePreferences() Ihrer PreferenceFragmentCompat.

XML-Werte werden nach wie vor auf API ignoriert <26 aber es programmatisch, Werkseinstellung.

Wie sagen João Magalhães:

Sie können nun min xml-Attribut in der SeekBar mit:

android:min="0.2"

Aber es ist besser für API <26 compat Attribut zu verwenden;):

xmlns:app="http://schemas.android.com/apk/res-auto"
app:min="0.2"

Edit:. Voraussetzung dafür ist offensichtlich, dass Sie Kompatibilitätsbibliotheken (AppCompat oder AndroidX) verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top