2012-04-19 30 views
6

Mam tye, aby dodać nowy stan do RelativeLayout, ale metoda onCreateDrawableState nigdy nie wywołuje.onCreateDrawableState nigdy nie dzwoni

Moja klasa jest:

public class UnreadableRelativeLayout extends RelativeLayout 
{ 
private static final int[] STATE_UNREADED = {R.attr.state_unreaded}; 
private boolean isUnreaded = false; 

public UnreadableRelativeLayout(Context context) 
{ 
    super(context); 
} 

public UnreadableRelativeLayout(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

public UnreadableRelativeLayout(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, defStyle); 
} 

public void setUnreaded(boolean isUnreaded) 
{ 
    if (this.isUnreaded != isUnreaded) 
    { 
     this.isUnreaded = isUnreaded; 
     refreshDrawableState(); 
    } 
} 

@Override 
protected int[] onCreateDrawableState(int extraSpace) 
{ 
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 
    if (isUnreaded) mergeDrawableStates(drawableState, STATE_UNREADED); 
    return drawableState; 
} 

}

Dlaczego nigdy metoda onCreateDrawableState zadzwonić?

Odpowiedz

0

miałem ten sam problem, a ja w końcu znalazłem to, co było problemem ... to związane z Android OS, używałem 2.2 i kiedy przeszedłem do 2.3.x to działało ...

+1

Ale muszę kompatybilność z Androidem 2.2 też. – Nik

+3

Używam wersji 4.0 i nadal występuje problem –

1

Spróbuj utwórz oddzielny układ z android:duplicateParentState="true" i nadmuchaj go w swojej klasie. To działa na mnie na Androidzie 4.0.4:

unreadable_relative_layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duplicateParentState="true" > 
    ... 
</RelativeLayout> 

UnreadableRelativeLayout.java:

public class UnreadableRelativeLayout extends RelativeLayout { 

    public UnreadableRelativeLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     LayoutInflater factory = LayoutInflater.from(context); 
     factory.inflate(R.layout.unreadable_relative_layout, this); 
    } 

} 
Powiązane problemy