2012-07-19 28 views
-3

你好,我有一個在android中最大進度值爲100的尋找欄。我希望seekbar只能在0-100之間變爲50。它不允許超過50的值。我的邏輯是,我不想改變seekbar的最大進度值。Seekbar進度級別達到0和最大值之間的限制

請幫助我如何在android中的seekbar中執行此操作。提前致謝。

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sb1=(SeekBar) findViewById(R.id.seekBar1); 
    sb2=(SeekBar) findViewById(R.id.seekBar2); 
    sb3=(SeekBar) findViewById(R.id.seekBar3); 

    tv1=(TextView) findViewById(R.id.textView1); 
    tv2=(TextView) findViewById(R.id.textView2); 
    tv3=(TextView) findViewById(R.id.textView3); 

    tvremaining=(TextView) findViewById(R.id.textView4); 
    tvused=(TextView) findViewById(R.id.textView5); 

    sb1.setOnSeekBarChangeListener(this); 
    sb2.setOnSeekBarChangeListener(this); 
    sb3.setOnSeekBarChangeListener(this); 

    total=100; 
    used=0; 
    remaining=total-used; 
    tvremaining.setText(Integer.toString(remaining)); 
    tvused.setText(Integer.toString(used)); 

} 

@Override 
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) 
{ 
    switch (arg0.getId()) 
    { 
    case R.id.seekBar1: 
     if(arg2) 
     { 
      tv1.setText(Integer.toString(arg1)); 
      //arg0.setProgressDrawable(getResources().getDrawable(R.drawable.progress_normal)); 
     } 
     break; 
    case R.id.seekBar2: 
     if(arg2) 
     { 
      tv2.setText(Integer.toString(arg1)); 
      //arg0.setProgressDrawable(getResources().getDrawable(R.drawable.progress_normal)); 
     } 
     break; 
    case R.id.seekBar3: 
     if(arg2) 
     { 
      tv3.setText(Integer.toString(arg1)); 
      //arg0.setProgressDrawable(getResources().getDrawable(R.drawable.progress_normal)); 
     } 
     break; 
    } 
    progress=arg1; 
} 

@Override 
public void onStartTrackingTouch(SeekBar arg0) 
{ 
    //arg0.setMax(remaining); 

    // TODO Auto-generated method stub 
} 

@Override 
public void onStopTrackingTouch(SeekBar arg0) 
{ 
    switch (arg0.getId()) 
    { 
    case R.id.seekBar1: 
     //sb2.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 
     //sb3.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 

     sb2.setProgress(progress); 
     sb3.setProgress(progress); 
     break; 
    case R.id.seekBar2: 
     //sb1.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 
     //sb3.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 

     sb1.setProgress(progress); 
     sb3.setProgress(progress); 
     break; 
    case R.id.seekBar3: 
     //sb1.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 
     //sb2.setProgressDrawable(getResources().getDrawable(R.drawable.progress_applied)); 

     sb1.setProgress(progress); 
     sb2.setProgress(progress); 
     break; 
    } 

    used= (Integer.parseInt(tv1.getText().toString()))+(Integer.parseInt(tv2.getText().toString()))+(Integer.parseInt(tv3.getText().toString())); 
    remaining = total-used; 
    tvremaining.setText(Integer.toString(remaining)); 
    tvused.setText(Integer.toString(used)); 

    // TODO Auto-generated method stub 
} 
+1

顯示一些代碼將幫助我們更好地識別問題。 – pixelscreen 2012-07-19 06:20:37

+1

你忘了提到你到目前爲止嘗試過的部分.. – 2012-07-19 06:21:42

回答

5

試試這個

final SeekBar mSeekBar=(SeekBar) findViewById(R.id.SeekBar); 

    mSeekBar.setMax(100); 
    mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

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

     } 

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

     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 
      if(progress>=50) 
      { 
       mSeekBar.setProgress(50); 
      } 


      // TODO Auto-generated method stub 

     } 
    }); 
+0

Thanxs很多它爲我工作....... – Khushi 2012-07-19 10:38:47

+1

然後不要忘記接受答案... :) – 2012-07-19 10:39:58

+0

我可以知道如何這樣做... – Khushi 2012-07-19 10:47:16

0

我已經實現了邏輯如下代碼:

public class MainActivity extends Activity implements OnSeekBarChangeListener{ 
public SeekBar sb1,sb2,sb3; 
public TextView tv1,tv2,tv3,tvremaining,tvused; 
public int remaining, total,used; 
public int progress; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sb1=(SeekBar) findViewById(R.id.seekBar1); 
    sb2=(SeekBar) findViewById(R.id.seekBar2); 
    sb3=(SeekBar) findViewById(R.id.seekBar3); 

    tv1=(TextView) findViewById(R.id.textView1); 
    tv2=(TextView) findViewById(R.id.textView2); 
    tv3=(TextView) findViewById(R.id.textView3); 

    tvremaining=(TextView) findViewById(R.id.textView4); 
    tvused=(TextView) findViewById(R.id.textView5); 

    sb1.setOnSeekBarChangeListener(this); 
    sb2.setOnSeekBarChangeListener(this); 
    sb3.setOnSeekBarChangeListener(this); 

    total=100; 
    used=0; 
    remaining=total-used; 
    tvremaining.setText(Integer.toString(remaining)); 
    tvused.setText(Integer.toString(used)); 

} 

@Override 
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) 
{ 
    switch (arg0.getId()) 
    { 
    case R.id.seekBar1: 
     if((arg1-progress)<=remaining || progress>=arg1) 
      tv1.setText(Integer.toString(arg1)); 
     else 
     { 
      arg0.setProgress(progress); 
      tv1.setText(Integer.toString(progress)); 
     } 
     break; 
    case R.id.seekBar2: 
     if((arg1-progress)<=remaining || progress>arg1) 
      tv2.setText(Integer.toString(arg1)); 
     else 
     { 
      arg0.setProgress(progress); 
      tv2.setText(Integer.toString(progress)); 
     } 
     break; 
    case R.id.seekBar3: 
     if((arg1-progress)<=remaining || progress>arg1) 
      tv3.setText(Integer.toString(arg1)); 
     else 
     { 
      arg0.setProgress(progress); 
      tv3.setText(Integer.toString(progress)); 
     } 
     break; 
    } 

    used= (Integer.parseInt(tv1.getText().toString()))+(Integer.parseInt(tv2.getText().toString()))+(Integer.parseInt(tv3.getText().toString())); 
    remaining = total-used; 
    tvremaining.setText(Integer.toString(remaining)); 
    tvused.setText(Integer.toString(used)); 
} 

@Override 
public void onStartTrackingTouch(SeekBar arg0) 
{ 
    progress= arg0.getProgress(); 
    //arg0.setMax(remaining); 

    // TODO Auto-generated method stub 
} 

@Override 
public void onStopTrackingTouch(SeekBar arg0) 
{ 

    // TODO Auto-generated method stub 
} } 

以下是佈局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<SeekBar 
    android:id="@+id/seekBar1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentTop="true" 
    android:layout_margin="40dp" /> 
<SeekBar 
    android:id="@+id/seekBar2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/seekBar1" 
    android:layout_margin="40dp" /> 

<SeekBar 
    android:id="@+id/seekBar3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/seekBar2" 
    android:layout_margin="40dp" /> 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/seekBar1" 
    android:text="0" /> 
<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/seekBar2" 
    android:text="0" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/seekBar3" 
    android:text="0" /> 
<TextView 
    android:id="@+id/textView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView3" 
    android:layout_marginTop="108dp" 
    android:text="TextView" />