2015-01-17 5 views
1

Я динамически создаю кнопку в linelayout horizontalscrollview, и при нажатии я получаю выбранную позицию кнопки.Изменение цвета текста кнопки программы программно

Я хочу знать, как изменить цвет текста выбранной кнопки?

Вот мой код.

String[] categories = {"SUN","MON", "TUS", "WED", "THU", "FRI", "SAT", "SUN","MON", "TUS", "WED", "THU", "FRI", "SAT"}; 
private LinearLayout ll; 
Button btn; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ll = (LinearLayout) findViewById(R.id.hsvLinearLayout); 

    for(int i = 0; i < categories.length; i++) { 
     btn = new Button(this); 
     btn.setText(categories[i]); 
     btn.setBackgroundColor(Color.parseColor("#ffffff")); 
     btn.setOnClickListener(buttonClick); 
     ll.addView(btn); 
     int idx = ll.indexOfChild(btn); 
     btn.setTag(Integer.toString(idx)); 
     // btn.setId(idx); 
    } 
} 

OnClickListener buttonClick = new OnClickListener() { 
    public void onClick(View v) { 
     String idxStr = Integer.toString(ll.indexOfChild(v)); 
     //(String)v.getTag(); 
     Toast.makeText(MainActivity.this, idxStr, 6000).show(); 
    } 
}; 
+0

Вы в порядке с решением, которое использует XML определенные стили, которые применяются программно или же нужно все в коде Java? – PaulR

ответ

4

Проверьте тип и назначить цвет текста

OnClickListener buttonClick = new OnClickListener() { 
     public void onClick(View v) { 
      String idxStr = Integer.toString(ll.indexOfChild(v)); 
      if(v instanceof Button){ 
       ((Button)v).setTextColor(Color.parseColor("#000000")); 
      } 
      Toast.makeText(MainActivity.this, idxStr, 6000).show(); 
     } 
    }; 
+0

Как я могу снова удалить цвет с кнопки, которая не выбрана? Я просто хочу сохранить цвет текста кнопки для тех, которые выбраны на мгновение. –

1

попробовать этот

EDITED ответа

((Button)view).setTextColor(Color.parseColor("#000000")); 
+0

нет его здесь не работает. его изменен только текст текста последней кнопки, не выбран или не нажата кнопка. – user3555472

2

пожалуйста, проверьте следующий ответ here и here.

как вы можете видеть, вы можете сделать это программно и через xml, создав файл стиля для всех состояний кнопки.

Надежда, что помогает

+0

Спасибо за добавление стилей в ответ. Использование их делает код намного более удобным. Кроме того, большое повторное использование существующих ответов. – PaulR