当前位置: 动力学知识库 > 问答 > 编程问答 >

How to change color of textview when changing seekbar android?

问题描述:

I am using seekbar to change color of textview, but problem is when is click at particular position in seekbar, other position of textview color is not changing.

How to solve this issue?

Thanks in advance.

Here is code.

 public class SplashActivity extends Activity {

private TextView textView;

private SeekBar seekBar;

int p = 0, noOfLength;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.test);

textView = (TextView) findViewById(R.id.textView1);

seekBar = (SeekBar) findViewById(R.id.seekBar1);

textView.setText("Loading.Please wait...");// length of string is 22

String textLength = textView.getText().toString();

noOfLength = textLength.length();

seekBar.setMax(noOfLength);

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

try {

Spannable spannableString = new SpannableString(textView

.getText());

if (progress > p) {

p = progress;

spannableString.setSpan(new ForegroundColorSpan(

Color.YELLOW), 0, progress,

Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

textView.setText(spannableString);

} else {

p = progress;

spannableString.setSpan(new ForegroundColorSpan(

Color.GRAY), progress - 1, progress + 1,

Spannable.SPAN_INCLUSIVE_INCLUSIVE);

textView.setText(spannableString);

}

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

}

When I am moving seekbar without leaving from start to end and from end to start position, it works but when i click seekbar at particular position, it's not working.

Here is screenshot of issue:

网友答案:

If you are willing to color single character to color while moving seekbar then put this in onProgressChanged :

            try {
                Spannable spannableString = new SpannableString(textView
                        .getText());
                if (progress > p) {
                    p = progress;
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.YELLOW), progress-1, progress,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    textView.setText(spannableString);
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.GRAY), 0, progress-1,
                            Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                    textView.setText(spannableString);
                } else {
                    p = progress;
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.YELLOW), progress-1, progress,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    textView.setText(spannableString);
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.GRAY), progress, noOfLength,
                            Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                    textView.setText(spannableString);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

or if you want to color all the characters then try this:

        try {
                Spannable spannableString = new SpannableString(textView
                        .getText());
                if (progress > p) {
                    p = progress;
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.YELLOW), 0, progress,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    textView.setText(spannableString);
                } else {
                    p = progress;
                    spannableString.setSpan(new ForegroundColorSpan(
                            Color.GRAY), progress - 1, noOfLength,
                            Spannable.SPAN_INCLUSIVE_INCLUSIVE);
                    textView.setText(spannableString);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
分享给朋友:
您可能感兴趣的文章:
随机阅读: