Как динамически изменить цвет кнопки и текста на Android - PullRequest
7 голосов
/ 03 ноября 2011

Как динамически / программно изменить цвет текста кнопки и форму кнопки (прямоугольник)?

Ответы [ 5 ]

12 голосов
/ 03 ноября 2011

Если в вашем 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>

Вы можете иметь свой собственный файл формы. Измените его в соответствии с вашими потребностями.

4 голосов
/ 03 ноября 2011

Вы можете изменить цвет текста кнопки динамически, как

Button btnChangeTextColor = (Button) findViewbyId (btnChange);btnChangeTextColor.setTextColor (Color.BLUE);

1 голос
/ 03 ноября 2011

В основном вы должны следовать схеме:

1) получить ссылку на объект, который вы хотите изменить

findViewById(R.id.<your_object_id>);

2) приведите его к типу объекта

Button btnYourButton = (Button) findViewById(R.id.<your_object_id>);

3) Использовать сеттеры для объекта "btnYourButton"

4) Перерисовать ваше представление (возможно, вызовет invalidate ());

Это зависит от того, когда вы хотите, чтобы изменения произошли. Я предполагаю, что у вас будет eventListener прикрепленный к вашему объекту, и после того, как событие сработало, вы внесете изменения.

0 голосов
/ 27 сентября 2012

@ Override public boolean onTouchEvent (событие MotionEvent) {

    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;
}
0 голосов
/ 03 ноября 2011

Вам понадобится какой-нибудь тип слушателя, где вы слушаете событие, и когда оно действительно меняет форму / цвет текста, используя некоторые методы набора.

Попытка:

http://developer.android.com/reference/android/view/View.OnClickListener.html

Чтобы получить более точную обратную связь, мне нужно знать, какой сигнал вы хотите получить, чтобы изменить цвет и форму текста. Можете ли вы дать более подробную информацию о том, что вы подразумеваете под динамическим изменением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...