final Button btn_footer = (Button)findViewById(R.id.btn_footer);
btn_footer.setBackground(new MyStateListDrawable(this));
: 나는 프로그램 내 버튼 중 하나에 StateListDrawable를 추가하려고 MyStateListDrawable 클래스 자체는 두 개의 LayerDrawable을 추가합니다. 하나는 버튼의 일반 상태이고 하나는 버튼이 비활성화되거나 눌린 상태 일 때 표시됩니다.
public class MyStateListDrawable extends StateListDrawable {
public MyStateListDrawable(Context c) {
addState(new int[] {-android.R.attr.state_pressed, -android.R.attr.state_enabled}, getStateDrawable(c,false));
addState(new int[] {android.R.attr.state_pressed, android.R.attr.state_enabled}, getStateDrawable(c,true));
}
...
LayerDrawables은 MyStateListDrawable 클래스의 방법 getStateDrawable 만들어집니다
이제...
public Drawable getStateDrawable(Context c, boolean isTransp){
GradientDrawable shadowGradient = new GradientDrawable();
GradientDrawable buttonGradient = new GradientDrawable();
[...]
Drawable[] drawableArray = {shadowGradient, buttonGradient};
LayerDrawable layerDrawable = new LayerDrawable(drawableArray);
if(isTransp)
layerDrawable.setAlpha(0x88);
return layerDrawable;
}
}
, 나는 버튼의 기본 상태가 제대로 렌더링되는 활동을 실행할 때,하지만 난 해제하려고하면 스타일이 두 번째 LayerDrawable로 변경되지 않는 버튼을 누르십시오. 내 버튼에 XML 파일을 통해 속성을 추가하면 제대로 작동하지만 현재는 이미 30 개 이상의 XML 파일 (색상 또는 크기와 관련하여 스타일이 약간 변함)이 있으며 동적으로 하나씩 만들 수 있습니다. 모든 버튼에 대한 클래스. 아무도이 문제의 원인을 알고 있습니까?