2013-07-04 2 views
0

내 애플리케이션에 타원형 모양의 큰 버튼이 배경으로있어 런타임이 만들어집니다. 나는 몇 가지 기능을 활성화하면 내가 버튼과 보여를 숨길 때의이 버튼 A.다른 크기의 버튼은 배경과 같은 드로어 블을 공유합니다.

이름을하자의 가시성은 A.

같은 배경으로, GONE로 설정되고, 네 개의 작은 버튼이 표시됩니다 다시 말하지만, 적절한 크기를 가지고 있지만 배경 drawable은 이전에 그려진 작은 버튼의 크기와 같습니다. A 버튼의 크기를 채우도록 크기를 조정할 수 있습니까?

업데이트 : 내 코드

//BigButton.java 
//... 
GradientDrawable idle = new GradientDrawable(); 
idle.setColor(Color.rgb(red, green, blue)); 
idle.setShape(GradientDrawable.OVAL); 
idle.setStroke(2, Color.rgb(red2, green2, blue2)); 
btn.setWidth(50*3f); 
btn.setHeight(65*3f); 
btn.setBackgroundDrawable(idle); 
//... 

//ChildButton.java 
//... 
GradientDrawable idle = BigButton.this.getIdleDrawable(); 
btn2.setWidth(50); 
btn2.setHeight(65); 
btn2.setBackgroundDrawable(idle); 
//... 

갱신 2 : 부모와 자식 버튼 사이에 자원 공유가 없습니다 있도록 다음은 새로운 당김을 만듭니다.

GradientDrawable idle = (GradientDrawable) ButtonSetupPanel.this.caller.getIdle().getConstantState().newDrawable(); 
+0

사용중인 XML과 배경 설정에 사용하는 코드를 게시하십시오. –

+0

Drawable은 런타임에 생성되므로 Shape에 XML이 없습니다. 새로운보기가 생성 된 다음 드로어 블 크기 자체가 크기 조정되는 것처럼 보이므로 큰 버튼을 다시 표시하면 작은 크기 조절 드로어 블이 표시되어 크기를 새로 고치는 방법이 필요합니다. – Vektor88

답변

1

두 버튼 모두 동일한 참조를 사용하고 있습니다. 두 개의 다른 참조를 사용하지만 설정은 동일합니다. 이 방법은 작은 버튼의 드로어 블 변경은 크고 작은 버튼은 보이지 않을 것입니다.

+0

두 개의 다른 것을 사용할 필요가 없도록 드로어 블을 새로 고치는 방법이 없습니까? – Vektor88

+1

아니요, 드로어 블에 대해 동일한 객체를보고 있기 때문입니다. 다른 사용자가 변경 내용 중 하나를 선택하여 변경하지 않으려면 별도의 개체 여야합니다. –

관련 문제