2015-01-17 6 views
1

linearlayout horizontalalscrollview에서 버튼을 동적으로 생성하고 클릭하면 버튼 위치가 선택됩니다.안드로이드는 프로그래밍 방식으로 버튼의 텍스트 색상을 변경합니다.

선택한 버튼의 텍스트 색상을 변경하는 방법을 알고 싶습니까?

여기 내 코드입니다.

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 정의 된 스타일을 활용하는 솔루션 괜찮아 도움이

희망? – 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

편집 대답을

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

해당 기능이 작동하지 않습니다. 변경된 마지막 버튼의 텍스트 색상 만, 선택되지 않았거나 눌려진 버튼이 아닙니다. – user3555472

2

는 다음과 같은 대답 herehere을 확인하시기 바랍니다 할당합니다.

여러분이 볼 수 있듯이 버튼의 모든 상태에 대한 스타일 파일을 만들어 프로그래밍 방식으로 그리고 XML을 통해이를 수행 할 수 있습니다.

+0

답장에 스타일을 추가해 주셔서 감사합니다. 코드를 사용하면 코드를 훨씬 더 유지 보수 할 수 있습니다. 또한 기존 답변을 재사용 할 수 있습니다. – PaulR