1

1 つのレイアウトに複数の SeekBars があります (電話では 3 つ、タブレットでは 8 つ)。カスタムの Thumb と Background があるので、Scale として表示されます。値が変更されたとき (SeekBars ごとに 1 つ) を検出するリスナーがあり、Thumb Drawable がある場合は別の色に変更されます。これはすべて機能しています。

機能していないのは、各 SeekBar を保存された値に設定することです。最初の SeekBar を設定すれば問題ありません。2 番目と 1 番目を設定すると、両方とも 2 番目の SeekBar の値を表示します。これは、3 番目、4 番目などを追加しても同じです。以下は、SeekBar 値を設定するために使用しているコードです。

mSeekBarOne.setProgress(mSavedValues.value1);
mSeekBarTwo.setProgress(mSavedValues.value2);
mSeekBarThree.setProgress(mSavedValues.value3);

ここで何が起こっているのか、またはこれを修正する方法がわかりません。SeekBars が設定された後、各 SeekBars でレイアウト パスを要求しようとしましたが、機能しません。

そして最後に、各 SeekBars の値を出力すると、実際には正しいのです! これは純粋に視覚的な問題です。複数の SeekBar (または ProgressBar) を 1 つのレイアウト内に配置できないというドキュメントを見逃している可能性がありますが、検索しても何も見つかりませんでした。

どんな助けでも大歓迎です。

編集:この問題は、各 SeekBar で進行状況の値を設定した後に Thumb Drawable を変更した場合にのみ発生するようです。Progress をチェックして Thumb Drawable を変更し、元の値と異なる場合は、Thumb Drawable を別のもの (別の色) に設定します。

アダム

4

1 に答える 1

0

問題は、私が使用していた Drawable がクラスにキャッシュされていたことにあるようです。このため、SeekBar は最後に更新されたときの Drawable の位置、つまり最後の SeekBar 位置を表示していました。

これは、SeekBar ごとに別のドローアブルを使用する代わりに、ドローアブルをローカルにキャッシュするときの私の誤解によるものだと思います。これが事実である理由についてのより良い説明は、私を大いに助けるでしょうが、少なくとも修正されました.

于 2013-04-03T11:44:46.500 に答える