6

ビューには 2 つSeekBarあり、レイアウトで同様に宣言します。

<SeekBar android:id="@+id/select_price"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp" />
<TextView android:id="@+id/max_price"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="0 VND"
          android:layout_gravity="center" />

<LinearLayout android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="20dp"
              android:orientation="horizontal">
    <ImageView android:layout_width="20dp"
               android:layout_height="20dp"
               android:src="@drawable/ic_distance"
               android:layout_marginRight="5dp" />
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textSize="18sp"
              android:text="@string/max_distance" />
</LinearLayout>

<SeekBar android:id="@+id/select_distance"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp"/>
<TextView android:id="@+id/distance"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="0 Km"
          android:layout_gravity="center" />

そして、ここに私がそれらを使用するコードがあります:

SeekBar sb = (SeekBar) v.findViewById(R.id.select_price);
            sb.setMax(1000);
            sb.setProgress(10);
            sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    TextView text = (TextView) v.findViewById(R.id.max_price);
                    text.setText(Integer.toString(progress) + PlaceListActivity.this.getResources().getString(R.string.dong));
                    maxPrice = progress;
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub

                }

            });

            SeekBar seek = (SeekBar) v.findViewById(R.id.select_distance);
            seek.setMax(10);
            seek.setProgress(1);
            seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    TextView text = (TextView) v.findViewById(R.id.distance);
                    text.setText(Integer.toString(progress) + PlaceListActivity.this.getResources().getString(R.string.km));
                    maxDistance = progress;
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    // TODO Auto-generated method stub

                }

            });

しかし、デバイスでアプリをデバッグすると、最初のシークバーは問題ありませんが、別のシークバーは奇妙になり、その理由がわかりません。これはスクリーンショットです:

ここに画像の説明を入力

ご覧のとおり、最初の小節の開始点は最初からではありません。この理由は何でしょうか?誰かがこれで私を助けてくれることを本当に願っています。ありがとう。

4

2 に答える 2

10

価格と距離の最小値をそれぞれ 10 と 1 に設定しながら、両方の SeekBars を最初から開始する場合は、両方をゼロに設定し、次のようにプログラムで最小値を追加します。

    SeekBar sb = (SeekBar) v.findViewById(R.id.select_price);
    sb.setMax(1000);
    sb.setProgress(0); // Set it to zero so it will start at the left-most edge
    sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            progress = progress + 10; // Add the minimum value (10)
            TextView text = (TextView) v.findViewById(R.id.max_price);
            text.setText(Integer.toString(progress) + PlaceListActivity.this.getResources().getString(R.string.dong));
            maxPrice = progress;
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {}

    });

    SeekBar seek = (SeekBar) v.findViewById(R.id.select_distance);
    seek.setMax(10);
    seek.setProgress(0); // Set it to zero so it will start at the left-most edge
    seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            progress = progress + 1; // Add the minimum value (1)
            TextView text = (TextView) v.findViewById(R.id.distance);
            text.setText(Integer.toString(progress) + PlaceListActivity.this.getResources().getString(R.string.km));
            maxDistance = progress;
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {}

    });
于 2013-05-17T13:09:56.777 に答える