2011-05-08 5 views
5

버튼의 스타일을 확장하려면 어떻게해야합니까?

해당 스타일 :

Widget.Button 스타일을 확장하는 ContactButton 스타일을 사용하려면, 그래서 전체 버튼을 다시 정의 할 필요없이 한 곳에서 스타일 속성을 유지할 수 있습니다 (9 패치 배경 외).

그러나 기본 단추 스타일을 상속하는 방법은 없습니다. 위의 결과는 항상 기본 TextView로 나타납니다.

가장 가까운 것은 ButtonStyle을 Button 생성자에 전달하는 것입니다. 그러면 기본 버튼 모양이 다시 표시되지만 물론이 방법으로 재정의 할 수는 없습니다.

Button contactButton = new Button(this, null, android.R.attr.buttonStyle); 

이것을 성취하기 위해서?

업데이트 :

이것은 bug in the View class 인 것처럼 보입니다. new Button(this, null, android.R.attr.buttonStyle)new Button(this, null, android.R.attr.buttonStyle)이 작동하는 이유와 new Button(this, null, android.R.style.Widget_Button)이 작동하지 않는 이유를 설명합니다.

XML에서 style 특성을 올바르게 설정하면 프로그래밍 방식으로 단추를 만들므로이 버그 만 실행하고 있습니다.

아직도 스타일 시스템을 사용할 수있는 간단한 해결 방법이 있는지 알고 싶습니다.

+0

실용적으로 만들지 않고 단추를 팽창 시키려고 했습니까? – schwiz

+0

해결책을 찾았습니까? –

답변

-1

팩토리 클래스를 만들고 재정의 된 객체의 새 인스턴스를 반환 할 수 있습니까?

Class ButtonFactory(){ 
    public Button getStyledButton(String name){ 
     Button styledButton = new Button(); 
     styledButton.setText(name); 
     // do stuff to button 
     return styledButton 
    } 
} 

귀하의 활동에 추가하십시오.

onCreate(..){ 
    ButtonFactory builder = new ButtonFactory(); 
    Button styledButton = builder.getStyledButton(); 
} 
+0

예 버튼 인스턴스를 직접 수정해도 작동하지만 스타일 시스템을 사용하여 멋지게 분리하고 싶습니다. – Anotherdroid

관련 문제