12

Seekbarフラグメントでを使用しており、Seekbarを別の位置に移動する必要があります。ただし、機能しsetProgress(xxx)ていません。

Seekbar:に対してプログラムでこのメソッドをトリガーするにはどうすればよいですpublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)か? 手動で移動するとSeekbarうまくいきます。

4

6 に答える 6

19

これは、ProgressBar のバグです。

同じ値が再度渡された場合、はsetProgress(...)更新をトリガーしないようです。drawableただし、setMax の間もトリガーされません。そのため、更新はありません。

bar.setProgress(0)これを解決するために、私は各更新の前にやっています...これは単なる回避策ですが、期待どおりに機能します:

bar.setProgress(0); // call these two methods before setting progress.
bar.setMax(20);
bar.setProgress(20);

2 番目のオプション。

mSeekBar.post(new Runnable() {
        @Override
        public void run() {
            mSeekBar.setProgress(percentOfFullVolume);
        }
    });

それは誰かのために働くかもしれません。

最初に最大値を設定してから進行状況を設定してみてください。

于 2015-02-10T13:41:15.840 に答える
0

ほとんどの場合、SeekBar は問題なく動作します。時々、そうではありません。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    //...
    seekBar.setProgress(value);
    //...
}

detach() + attach() でフラグメント ビューを更新した後、コードが機能しません。私の解決策は、onViewStateRestored() 内で setProgress() を適用することです。

@Override
public void onViewStateRestored(Bundle inState) {
    //...
    seekBar.setProgress(value);
    //...
}
于 2018-03-14T03:41:56.090 に答える