Reputation: 9225
I have 7 TextViews
and one SeekBar
I have the following code which is supposed to change the text color as I move the thumb in the SeekBar
:
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener {
SeekBar sbOne, sbTwo;
SeekBar sbSyst;
TextView tvOne;
TextView tvSOne, tvSTwo, tvSThree, tvSFour, tvSFive, tvSSix, tvSSeven;
NumberPicker npO, npT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sbSyst = (SeekBar) findViewById(R.id.syst_bar);
sbSyst.setOnSeekBarChangeListener(this);
sbOne = (SeekBar) findViewById(R.id.sb1);
sbOne.setOnSeekBarChangeListener(this);
sbTwo = (SeekBar) findViewById(R.id.sb2);
sbTwo.setOnSeekBarChangeListener(this);
tvOne = (TextView) findViewById(R.id.tv1);
tvSOne = (TextView) findViewById(R.id.tvFirst);
tvSTwo = (TextView) findViewById(R.id.tvSecond);
tvSThree = (TextView) findViewById(R.id.tvThird);
tvSFour = (TextView) findViewById(R.id.tvFourth);
tvSFive = (TextView) findViewById(R.id.tvFifth);
tvSSix = (TextView) findViewById(R.id.tvSixth);
tvSSeven = (TextView) findViewById(R.id.tvSeventh);
/*npO = (NumberPicker) findViewById(R.id.np1);
npO.setMinValue(70);
npO.setMaxValue(190);
npO.setWrapSelectorWheel(true);
npO.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
// do something here
tvOne.setText(String.valueOf(newVal));
}
});
npT = (NumberPicker) findViewById(R.id.np2);
npT.setMinValue(40);
npT.setMaxValue(100);
npT.setWrapSelectorWheel(true);*/
}
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
//tvSColor.setBackgroundColor(getColorFromSeekbars());
progress += 70;
switch(seekBar.getId()) {
case R.id.sb1:
//etO.setText(String.valueOf(progress+70));
//npO.setValue(progress+70);
break;
case R.id.sb2:
//etT.setText(String.valueOf(progress+40));
//npT.setValue(progress+40);
break;
case R.id.syst_bar:
tvOne.setText(String.valueOf(progress));
if (progress == 70) {
tvSOne.setTextColor(Color.parseColor("#00996a"));
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 90) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.parseColor("#00996a"));
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 110) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.parseColor("#00996a"));
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 130) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.parseColor("#00996a"));
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 150) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.parseColor("#00996a"));
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 170) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.parseColor("#00996a"));
tvSSeven.setTextColor(Color.WHITE);
}
else if (progress == 190) {
tvSOne.setTextColor(Color.WHITE);
tvSTwo.setTextColor(Color.WHITE);
tvSThree.setTextColor(Color.WHITE);
tvSFour.setTextColor(Color.WHITE);
tvSFive.setTextColor(Color.WHITE);
tvSSix.setTextColor(Color.WHITE);
tvSSeven.setTextColor(Color.parseColor("#00996a"));
}
//etT.setText(String.valueOf(progress+70));
//npT.setValue(progress+40);
break;
default:
break;
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
//mTrackingText.setText("Tracking on");
}
public void onStopTrackingTouch(SeekBar seekBar) {
//tvOne.setText("Red: " + String.valueOf(progress));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
XML:
<LinearLayout
android:id="@+id/refresh_match_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:background="@drawable/background_round"
android:orientation="vertical"
android:visibility="visible"
android:layout_alignParentBottom="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Systolic (top number)"
android:textColor="#ffffff"
android:textSize="20sp" />
<SeekBar
android:id="@+id/syst_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:progress="0"
android:max="190"
android:progressDrawable="@drawable/progress_bar"
android:secondaryProgress="0"
android:thumb="@drawable/thumb_state" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="horizontal"
android:visibility="visible"
android:weightSum="14" >
<TextView
android:id="@+id/tvFirst"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="70"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvSecond"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="90"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvThird"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="110"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvFourth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="130"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvFifth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="150"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvSixth"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="170"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:id="@+id/tvSeventh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center_horizontal"
android:text="190"
android:textColor="@android:color/white"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
I am probably not doing it correctly, but as you can see the value of progress
is 190 from the image but the third TextView
is green and not the last. Any idea how to resolve it?
Upvotes: 0
Views: 2225
Reputation: 361
In the above code you have used else if so what happens is that when the first if or any of the else if becomes true then rest of the else if below that are not evaluated.Hence you get the same color. Try using if in all the conditional statements and you will get the desired result.I tested it :)
EDIT: Adding codes to make it more clear
MainActivity.java
package com.abc.def;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity implements
SeekBar.OnSeekBarChangeListener {
SeekBar sb;
TextView tv1, tv2, tv3, tv4, tv5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sb = (SeekBar) findViewById(R.id.seekBar1);
sb.setOnSeekBarChangeListener(this);
tv1 = (TextView) findViewById(R.id.textView1);
tv2 = (TextView) findViewById(R.id.textView2);
tv3 = (TextView) findViewById(R.id.textView3);
tv4 = (TextView) findViewById(R.id.textView4);
tv5 = (TextView) findViewById(R.id.textView5);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
// set the message to display
alertbox.setMessage("Wanna go to www.moma.org for more info?");
// add a neutral button to the alert box and assign a click listener
alertbox.setNegativeButton("NOPE!!",
new DialogInterface.OnClickListener() {
// click listener on the alert box
public void onClick(DialogInterface arg0, int arg1) {
// the button was clicked
}
});
alertbox.setPositiveButton("YEAH!!",
new DialogInterface.OnClickListener() {
// click listener on the alert box
public void onClick(DialogInterface arg0, int arg1) {
// the button was clicked
String url = "http://www.moma.org";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
// show it
alertbox.show();
}
return true;
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromTouch) {
// TODO Auto-generated method stub
switch (seekBar.getId()) {
case R.id.seekBar1:
// tvOne.setText(String.valueOf(progress));
if (progress >= 10) {
tv1.setBackgroundColor(Color.parseColor("#00996a"));
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.WHITE);
}if (progress >= 20) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.parseColor("#00996a"));
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.WHITE);
}if (progress >= 40) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.parseColor("#00996a"));
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.WHITE);
}if (progress >= 60) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.parseColor("#00996a"));
tv5.setBackgroundColor(Color.WHITE);
}if (progress >= 70) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.parseColor("#00996a"));
}if (progress >= 80) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.parseColor("#00996a"));
}if (progress >= 100) {
tv1.setBackgroundColor(Color.WHITE);
tv2.setBackgroundColor(Color.WHITE);
tv3.setBackgroundColor(Color.WHITE);
tv4.setBackgroundColor(Color.WHITE);
tv5.setBackgroundColor(Color.WHITE);
}
break;
default:
break;
}
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/verti"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/beach1"
android:baselineAligned="false"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="100"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="60"
android:orientation="vertical"
android:weightSum="100" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="200sp"
android:layout_weight="50"
android:background="@android:color/white"
android:text="" />
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="200sp"
android:layout_marginTop="23dp"
android:layout_weight="50"
android:background="@android:color/darker_gray"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="40"
android:orientation="vertical"
android:weightSum="100" >
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="158dp"
android:layout_marginLeft="15dp"
android:layout_weight="1"
android:background="#FFEE66"
android:text="" />
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:background="#AABB66"
android:text="" />
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="5dp"
android:layout_weight="1"
android:background="#ee1166"
android:text="" />
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_weight="1"
android:max="100"
android:progress="0"
android:background="@android:color/black"/>
</LinearLayout>
</LinearLayout>
Upvotes: 1
Reputation: 3288
you should probably change ==
to >=
updated answer:
in the xml, you have android:max="120"
, make it android:max="190"
Upvotes: 3