2013-05-17 46 views
4

我有兩個SeekBar在我看來,我的佈局類似聲明它們:Android的 - 搜索欄的起點

<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 

       } 

      }); 

但是,當我調試應用程序在我的設備,第一個搜索條是好的,但在另一個會很奇怪,我不要」不知道爲什麼。這是截圖:

enter image description here

正如你所看到的,在第一欄的出發點不是從一開始。這可能是什麼原因?我真的希望有人能幫我解決這個問題。謝謝。

回答

8

如果您希望兩個SeekBars都從頭開始,同時分別爲價格和距離設置最小值10和1,則將它們都設置爲零,並且只需編程添加最小值所以:

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) {} 

    }); 
+0

感謝您使用所有解釋和代碼清楚地說明問題! –

4

根據你的代碼很明顯 - 第一搜索欄是在1%(進展10,最大1000),該第二搜索欄是在10%(進展1,最多10)。

所以你的第二個Seekbar不是在開始。只需調整這些值...

+0

恐怕我還是不明白如何調整它。你可以幫我嗎? –

+0

您的代碼包含值 - setMax()和setProgress()。調整這些值。 – SirKnigget