2

MainActivity onCreateView で、次のようにプログラムで (xml なしで) シーク バーを作成します。

        mVolControlSB = new SeekBar(context);
        mVolControlSB.setMax(maxVolume);
        mVolControlSB.setProgress(curVolume);
        mVolControlSB.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
            Log.d("MainActivity", "volControlSB.setOnSeekBarChangeListener onStopTrackingTouch arg0="+arg0);
        }

        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
            Log.d("MainActivity", "volControlSB.setOnSeekBarChangeListener onStartTrackingTouch arg0="+arg0);
        }

        @Override
        public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
            mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
        }
    });
    mVolControlSB.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0, 20));
    kitctrlLayout.addView(mVolControlSB);

シーク バーは表示されますが、親指の位置が間違っています (私の例では maxVolume は 15 で curVolume は 10 ですが、左端まで表示されています)。また、親指をドラッグしてもコールバックは呼び出されず、何も起こりません。mVolControlSB を MainActivity クラスの静的フィールドにしていますが、ローカルとしても試しました

static  SeekBar mVolControlSB;

誰かアイデアがありますか?

注、私はタブレイアウトを使用しており、このコードは内部で呼び出されていることを追加する必要があります

        public static class DummySectionFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

ありがとう

4

1 に答える 1