如何动态/编程地更改按钮文本颜色和按钮形状(矩形)?
答案 0 :(得分:12)
如果你的main.xml中有一个id = button1的按钮,那么你可以按如下方式使用它:
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>
您可以拥有自己的形状文件。根据需要进行更改。
答案 1 :(得分:4)
您可以像
一样动态更改按钮文字颜色按钮btnChangeTextColor =(按钮)findViewbyId(btnChange); btnChangeTextColor.setTextColor(Color.BLUE);
答案 2 :(得分:1)
基本上你必须遵循这个计划:
1)引用您想要更改的对象
findViewById(R.id.<your_object_id>);
2)将其投射到对象类型
Button btnYourButton = (Button) findViewById(R.id.<your_object_id>);
3)在对象“btnYourButton”上使用setter
4)重绘你的视图(可能调用invalidate());
这取决于您何时希望更改发生。我假设你将有一个eventListener 附加到您的对象,在事件被触发后,您将执行更改。
答案 3 :(得分:0)
您需要某种类型的侦听器来侦听要发生的事件,以及何时使用某些set方法更改形状/文本颜色。
尝试:
http://developer.android.com/reference/android/view/View.OnClickListener.html
为了提供更有针对性的反馈,我需要知道您想要改变文本颜色和形状的信号。您能否动态更新详细信息?
答案 4 :(得分:0)
@覆盖 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;
}