How to Set Seekbar Min and Max Value

How to set seekbar min and max value

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {

int MIN = 5;
if (progress < MIN) {

value.setText(" Time Interval (" + seektime + " sec)");
} else {
seektime = progress;
}
value.setText(" Time Interval (" + seektime + " sec)");

}
});

Seekbar min value 100 and max 0 Android

As SeekBar extend ProgressBar and by definition ProgressBar is Visual indicator of progress in some operation. So it is just a partition used to show current progress/status..

As you have defined setProgress(0) and setMax(1000) it creates a seekbar with 100 partition with 10 increments...So I would suggest you to get current progress, and reduce it by 1000 (1000 - value) to get your final value (you can create a method return final value).....this will show your progress from 1000----0.

Android SeekBar Minimum Value

How to define a SeekBar's minimum value?

You can't define the minimum value. It is 0.

Basically I need to change my minimum
value from 0 to 0.2

When you get the value, add 0.2 to it.

how to limit seekbar

In SeekBar you can set only max value.

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

And,
You cannot directly set the minimum value to the seekbar.

 SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01);

mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
length_edit.setText(Integer.toString(progress + 20));
}

public void onStartTrackingTouch(SeekBar seekBar) {}

public void onStopTrackingTouch(SeekBar seekBar) {}
});

As you see min progress you can sum with min which I would like - in your case 20.

How to set Minimum progress seekbar?

You can set minimum or maximum progress

Sample Image

eekerFont.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){   

public void onStopTrackingTouch(SeekBar seekBar) {

//TODO My code goes here

int CurrentLevel = eekerFont.getProgress();
if (CurrentLevel < 30) CurrentLevel = 30;
eekerFont.setProgress(CurrentLevel);

}

public void onStartTrackingTouch(SeekBar seekBar){

}

public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser){
}});

In XML Also you can set

android:progress="10"

How to display max and min values on a SeekBar?

I would like to implement a seekbar in an Android App. But on the
seekbar I would also like to display the max and min values. Min value
would always be 0 but max value is dependent on clip length. (Example:
0---180)

Is there a way to display the value (on the seek bar itself) that is selected when the user > moves the seekbar?

If you want those values on top of the SeekBar then extend the SeekBar class and override the onDraw method. After calling super.onDraw(canvas) you can then draw your own stuff, like the min/max values at the start and end of the SeekBar or the current progress. Making something that looks good(on all the different looking Seekbars out there) will be something a bit harder as you'll need to carefully calculate where and how you draw the text.

A simpler approach would be to make a custom component wrapping the SeekBar with a TextView on it's left and right(with an optional TextView below for the current progress) and set those with the min/max values(even if the max values is set programmatically, the max TextView could be made to "follow" those changes). The progress can be easily calculated and updated knowing the width of the SeekBar and the current progress.

A small example for the second case:

public static class SeekBarWithValues extends RelativeLayout {

private int mMax = 100;
private TextView mMinText;
private TextView mMaxText;
private TextView mCurrentText;
private SeekBar mSeek;

public SeekBarWithValues(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(getContext()).inflate(
R.layout.content, this);
// the minimum value is always 0
mMinText = (TextView) findViewById(R.id.minValue);
mMinText.setText("0");
mMaxText = (TextView) findViewById(R.id.maxValue);
mCurrentText = (TextView) findViewById(R.id.curentValue);
mSeek = (SeekBar) findViewById(R.id.seekBar);
mSeek.setMax(100);
mMaxText.setText(String.valueOf(mSeek.getMax()));
}

/**
* This needs additional work to make the current progress text stay
* right under the thumb drawable.
*
* @param newProgress
* the new progress for which to place the text
*/
public void updateCurrentText(int newProgress) {
mCurrentText.setText(String.valueOf(newProgress));
final int padding = mMinText.getWidth() + mSeek.getPaddingLeft();
final int totalSeekWidth = mSeek.getWidth();
final RelativeLayout.LayoutParams lp = (LayoutParams) mCurrentText
.getLayoutParams();
final int seekLocation = (mSeek.getProgress() * totalSeekWidth)
/ mMax - mCurrentText.getWidth() / 2;
lp.leftMargin = seekLocation + padding;
mCurrentText.setLayoutParams(lp);
}

public SeekBar getSeekBar() {
return mSeek;
}

public void updateSeekMaxValue(int newValue) {
mMax = newValue;
mMaxText.setText(mMax);
mSeek.setMax(mMax);
}

}

Where the content layout is:

<merge xmlns:android="http://schemas.android.com/apk/res/android" >

<TextView
android:id="@+id/minValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/seekBar"
android:layout_alignParentLeft="true"
android:layout_alignTop="@id/seekBar"
android:gravity="center" />

<TextView
android:id="@+id/maxValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/seekBar"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/seekBar"
android:gravity="center" />

<SeekBar
android:id="@id/seekBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/maxValue"
android:layout_toRightOf="@id/minValue" />

<TextView
android:id="@+id/curentValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/seekBar"
android:gravity="center" />

The current text tends to be offseted more than it should and additional work is required to put it right under the seek handle.



Related Topics



Leave a reply



Submit