2013-03-26 33 views

Trả lời

13

SeekBar kéo dài ProgressBar.

ProgressBar có một phương pháp

public void setMax(int max) 

Vì nó chỉ chấp nhận int bạn sẽ phải làm một số chuyển đổi từ một giá trị int để có được phao mà bạn đang theo đuổi.

Something như thế này nên làm như lừa:

mSeekBar.setMax(4); 
//max = 4 so the possible values are 0,1,2,3,4 
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){ 
    public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 
    { 
     // TODO Auto-generated method stub 
     Toast.makeText(seekBar.getContext(), "Value: "+getConvertedValue(progress), Toast.LENGTH_SHORT).show(); 
    } 
    public void onStartTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
    public void onStopTrackingTouch(SeekBar seekBar) 
    { 
     // TODO Auto-generated method stub 
    } 
}); 

Phần này sẽ được ở onCreate() và bạn sẽ phải sử dụng findViewById() hoặc một cái gì đó để có được một tài liệu tham khảo để mSeekBar.

public float getConvertedValue(int intVal){ 
    float floatVal = 0.0; 
    floatVal = .5f * intVal; 
    return floatVal; 
} 

Phần này là một phương pháp khác mà bạn có thể thêm vào Hoạt động sẽ chuyển đổi từ int sang giá trị nổi trong phạm vi bạn cần.

+0

tốt, cảm ơn !! bây giờ tôi cần phải thiết lập tiến độ seekbar, nhưng chức năng .progress chỉ chấp nhận giá trị int, làm thế nào tôi có thể chuyển đổi float để int trong dự án này? – kosma822

+0

@ kosma822 bạn sử dụng phương thức setProgress (int). Khi bạn gọi nó, nó sẽ lần lượt gọi phương thức onProgressChange() trong trình nghe của bạn mà sẽ thực hiện chuyển đổi để nổi cho bạn với phương thức đó là đoạn mã thứ hai trong câu trả lời của tôi. Chỉ cần thay đổi bánh mì nướng trong ví dụ của tôi để bất cứ điều gì nó là bạn muốn làm với giá trị float. – FoamyGuy

0

Bạn nên thực hiện tùy chỉnh của riêng bạn tìm kiếm thanh, làm cho nó nhảy giữa các giá trị mong muốn và dính vào họ, bạn có thể tìm thấy thông tin hữu ích ở đây:

Making A Custom Skinny ProgressBar/Seekbar

+0

Đó giao dịch câu hỏi nhiều hơn với tùy biến giao diện của SeekBar chứ không phải là chức năng của các giá trị mà có thể xảy ra. Để có được hiệu quả mà OP là sau khi không cần phải thực hiện một thanh tìm kiếm tùy chỉnh. Chỉ cần chuyển đổi từ int sang float cho phạm vi giá trị mà chúng cần. – FoamyGuy

+0

Tôi không cần bố cục tùy chỉnh, tôi cần làm điều đó theo lập trình và tôi cần một ví dụ:/ – kosma822

1
 textView.setProgress(0); 
    textView.incrementProgressBy(1); 
    textView.setMax(4); 

     public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 

         float progressD=(float) progress/2; 
         textView.setText(String.valueOf(progressD)); 

// 0-2 bước 0,5

Các vấn đề liên quan