Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to add a seekbar to my actual preference screen?

I keep seeing the tutorial on adding your own seekbar preference, but its not in my actual prefs.xml. Is there any way to have one in my main prefs screen or will I have to separate it.

like image 614
VicVu Avatar asked Jan 26 '12 00:01

VicVu


People also ask

How do I add a conditional Seekbar to my player?

Open your player properties by going to the Home tab on the Storyline ribbon and clicking Player. The conditional seekbar is an exclusive feature of the modern player style, so make sure the Player Style option on the ribbon to set to Modern.

What is Seekbar in Android?

SeekBar Tutorial With Example In Android Studio In Android, SeekBar is an extension of ProgressBar that adds a draggable thumb, a user can touch the thumb and drag left or right to set the value for current progress.

What is the maximum value for a Seekbar?

By default, a SeekBar takes maximum value of 100. Below we set 150 maximum value for a Seek bar. 3. progress: progress is an attribute of SeekBar used to define the default progress value, between 0 and max.

How do I allow drag-and-drop on the Seekbar?

( Learn more about player features.) Mark the Seekbar box near the bottom of the window, then use the corresponding drop-down list to choose Allow drag after completion. Click OK to save your changes and close the player properties.


1 Answers

There seem to be 2 slider preferences by Google -

  • SeekBarPreference - inline
  • SeekBarDialogPreference - dialog based

but I am not sure when they will be available.

You could use a custom inline SeekBarPreference by me (see the 2 sliders at the bottom):

screenshot

My code is quite simple -

SeekBarPreference.java:

public class SeekBarPreference extends Preference implements OnSeekBarChangeListener {
    private SeekBar mSeekBar;
    private int mProgress;

    public SeekBarPreference(Context context) {
        this(context, null, 0);
    }

    public SeekBarPreference(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public SeekBarPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setLayoutResource(R.layout.preference_seekbar);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        mSeekBar = (SeekBar) view.findViewById(R.id.seekbar);
        mSeekBar.setProgress(mProgress);
        mSeekBar.setOnSeekBarChangeListener(this);
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        if (!fromUser)
            return;

        setValue(progress);
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // not used
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // not used
    }

    @Override
    protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
        setValue(restoreValue ? getPersistedInt(mProgress) : (Integer) defaultValue);
    }

    public void setValue(int value) {
        if (shouldPersist()) {
            persistInt(value);
        }

        if (value != mProgress) {
            mProgress = value;
            notifyChanged();
        }
    }

    @Override
    protected Object onGetDefaultValue(TypedArray a, int index) {
        return a.getInt(index, 0);
    }
}

And preference_seekbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical" >

    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="0dp"
        android:layout_weight="80"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@android:id/summary"
        android:layout_width="0dp"
        android:layout_weight="20"
        android:layout_height="wrap_content" />

</LinearLayout>
like image 96
Alexander Farber Avatar answered Nov 15 '22 06:11

Alexander Farber