Discrete seekbar in Android app? Discrete seekbar in Android app? android android

Discrete seekbar in Android app?


The Seekbar works great for discrete values. We use a Seekbar for discrete data as shown below. To show which item is selected, we just change the font of the selected text view so it is bigger. You could also highlight by changing the background color or something. It works pretty well. You will want to call setMax(11) on the seek bar, and then in your code you need to translate between the range (0 through 11) and (-5 through 5) appropriately.

 <LinearLayout            android:orientation="vertical"           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:gravity="center_horizontal">     <LinearLayout            android:orientation="horizontal"           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:gravity="center_horizontal">    <TextView android:text="-5"            android:id="@+id/answerNegative5"            android:textSize="25sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    <TextView android:text="-4"            android:id="@+id/answerNegative4"            android:textSize="25sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    <TextView android:text="-3"            android:id="@+id/answerNegative3"            android:textSize="25sp"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />    .....  </LinearLayout>  <SeekBar android:id="@+id/intensitySlider"                    android:layout_weight="0"                    android:layout_width="fill_parent"                    android:layout_height="wrap_content" /></LinearLayout>


If you want to implement discrete seekbar with number of gaps without using third party library then use style property of seekbar.

<SeekBar     android:id="@+id/sb"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:max="10"     android:thumb="@drawable/ic_location"     android:theme="@style/Widget.AppCompat.SeekBar.Discrete" />

enter image description here


I don't know what is the issue here, you add a seekbar having a range of 0-10. Then you can map these values to -5 if you substract -5 from the selected value.

EDIT

add android:max="10" to the xml definiton and you get a fixed size seekbar.

You maybe should consider to add a textview to denote the current selected value's textual representation such as: Strongly Disagree.To update this view, subscribe to onProgressChanged event and progress parameter will give you the chosen number.

SeekBar s = (SeekBar) findViewById(R.id.SeekBar);s.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {                    @Override                    public void onProgressChanged(SeekBar seekBar,                            int progress, boolean fromUser) {                                    }}