Reputation: 9265
How to change the button text color and button shape(rectangle) dynamically/programmatically?
Upvotes: 7
Views: 23756
Reputation: 3316
@Override public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
start_x = event.getX();
start_y = event.getY();
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
setTitle(event.getX() + "y pos" + event.getY());
RelativeLayout layout = (RelativeLayout) findViewById(R.id.lay);
layout.setBackgroundColor(Color.rgb((int) start_x, (int) start_y, 0));
} else if (event.getAction() == MotionEvent.ACTION_UP) {
}
return true;
}
Upvotes: 0
Reputation: 19250
If you have a button in your main.xml with id=button1 then you can use it as follows:
setContentView(R.layout.main);
Button mButton=(Button)findViewById(R.id.button1);
mButton.setTextColor(Color.parseColor("#FF0000")); // custom color
//mButton.setTextColor(Color.RED); // use default color
mButton.setBackgroundResource(R.drawable.button_shape);
R.drawable.button_shape(button_shape.xml):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#70ffffff"
android:centerColor="#70ffffff"
android:endColor="#70ffffff"
android:angle="270" />
<corners
android:bottomRightRadius="8dp"
android:bottomLeftRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp"/>
</shape>
You can have your own shape file.change it according to your need.
Upvotes: 13
Reputation: 2886
You Can change Button Text Colour dynamically like
Button btnChangeTextColor = (Button)findViewbyId(btnChange); btnChangeTextColor.setTextColor(Color.BLUE);
Upvotes: 4
Reputation: 39480
You'll need some type of listener where you listen for an event to occur, and when it does change the shape/text color using some set methods.
Try:
http://developer.android.com/reference/android/view/View.OnClickListener.html
To give more pointed feedback I'd need to know what signal you want to have in order to change the text color and shape. Can you give more detail on what you mean by change dynamically?
Upvotes: 0
Reputation: 31483
Basically you have to follow the scheme:
1) get reference to the object you want to change
findViewById(R.id.<your_object_id>);
2) cast it to the object type
Button btnYourButton = (Button) findViewById(R.id.<your_object_id>);
3) Use setters on the object "btnYourButton"
4) Redraw your View (possibly calling invalidate());
It depends when do you want the change to happen. I assume you will have an eventListener attached to your object, and after the event is fired you will perform your change.
Upvotes: 1