88 votes

Valeur minimale de la recherche Android

Est-ce que quelqu'un sait comment définir la valeur minimale d'un SeekBar? Est-ce fait dans la mise en page XML ou dois-je le définir par programme?

Fondamentalement, je dois changer ma valeur minimale de 0 à 0,2

127voto

CommonsWare Points 402670

Bonjour, est-ce que quelqu'un sait comment définir la valeur minimale d'une SeekBar?

Vous ne pouvez pas définir la valeur minimale. C'est 0 .

Fondamentalement, je dois changer ma valeur minimale de 0 à 0,2

Lorsque vous obtenez la valeur, ajoutez-y 0.2 .

25voto

Asthme Points 561

Voici ce que j'utilise pour obtenir android:max pour une plage max / min pour un SeekBar .

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

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

Ainsi, vous obtiendrez la plage minimum to minimum+max ;

Pour définir la valeur maximale en xml, utilisez max=(desiredMax-min) ;

11voto

Le min de la valeur doit être à 0 pour la SeekBar objet en Java (c'est à dire, il ne peut pas être changé), mais c'est la façon d'obtenir l'apparence et la performance.

Supposons que vous voulez que votre min à 5 et le max à 100...

Donc, vous avez une gamme de 95, de sorte que vous devrez configurer la SeekBar avec une valeur maximale de 95.

Si votre seekbar dispose d'une INTERFACE utilisateur étiquettes, vous ferait 5 (min) et 100 (max).

Ainsi, la mise en page XML serait quelque chose comme...

<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>

Alors maintenant, vous pouvez introduire l' 5 de correction, comme ça...

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);
        }
    }
});

Cette solution permettra de donner à votre seekbar la bonne min, max et l'échelle sur l'INTERFACE, et la position de la commande de ne pas "sauter" vers la droite si l'utilisateur fait glisser tout le chemin à gauche.

9voto

SALMAN Points 2518
@Override
public void onProgressChanged(SeekBar arg0, int boolean arg2) {
    int siz=size+10;
    txtViewFontSize
            .setTextSize(siz);

    Toast.makeText(this,
            "" + siz, Toast.LENGTH_SHORT).show();

}

3voto

João Sousa Points 365

J'ai créé cette bibliothèque simple, ce n'est pas beaucoup, mais cela peut vous faire gagner du temps.

https://github.com/joaocsousa/DoubleSeekBar

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X