SeekBarには、**set.Max(100)**のように、Maxを指定できるようですが
Minを指定できないと調べてわかりました。
そこで、Minをセットできるメソッドを作ろうとしていますが
どう作って良いのかわかりません。
調べても、progressが0の時、強制的に1にするようなメソッドしか出ないです。
ある条件の時、Minを50に指定したいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/17 00:54
回答2件
0
ベストアンサー
ドキュメントをお読みになったのなら、setMin()という関数が
API26、つまりAndroid8.0以上でなら使えることが分かります。
なので、一括りに
Minを指定できない
と結論を出してしまうのは早すぎるのでは・・・と思った次第です。
本題ですが、上記の通りsetMin()自体はありますが8.0未満では使用できません。
簡単なのは、Minの値を変数かなんかで持っておき、
Maxには実際にMaxとして設定したい値からMinの値を引いた数をセットします。
値をセットするときはMinを引いた数をセットし、
値を取得したいときはMinを足した数を取得すればよいです。
java
1/** 2 * 最小値 3 */ 4private int mMin; 5 6// 省略 7 8@Override 9public synchronized void setMax(int max) { 10 super.setMax(max - mMin); 11} 12 13@Override 14public synchronized int getProgress() { 15 return super.getProgress() + mMin; 16} 17 18@Override 19public synchronized void setProgress(int progress) { 20 super.setProgress(progress - mMin); 21} 22
SeekBarを継承したクラスを作成し、こういうのを仕込むとか、
あるいはOnSeekBarChangeListenerで値を受け取ったときに仕込むとか
やりやすい方で・・・
投稿2018/08/17 03:30
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/08/17 05:37
0
SeekBar seekBar = findViewById(R.id.seekbar); // 最小値 seekBar.setMin(50); // 最大値 seekBar.setMax(100);
あるいは表現の仕方としてこれも最初は50%
seekBar.setProgress(50);
後は50%以下になった場合にそれ以下の値を取れないようにプログラムするとか
いろいろやり方はあります。
Documentを見るとSeekBarはいろいろと継承しているので
それらの機能を引き継いでいます
SeekBar public class SeekBar extends AbsSeekBar java.lang.Object ↳ android.view.View ↳ android.widget.ProgressBar ↳ android.widget.AbsSeekBar ↳ android.widget.SeekBar
ProgressBarを見ると リンク内容
void setMax(int max)
Set the upper range of the progress bar max.
void setMin(int min)
Set the lower range of the progress bar to min.
というのがありますから
このメソッドも使えますね
投稿2018/08/17 01:45
編集2018/08/17 01:47総合スコア3733
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。