2012-04-19 19 views
6

पर कॉल करें, मुझे रिलेवेटिवआउट में नया राज्य जोड़ने के लिए टाई है लेकिन परक्रेट ड्रायबल स्टेट विधि कभी कॉल नहीं होती है।onCreateDrawableState कभी भी

मेरी कक्षा है:

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; 
} 

}

क्यों onCreateDrawableState विधि कभी नहीं कहते हैं?

उत्तर

0

मैं एक ही समस्या थी और मैं अंत में पाया कि समस्या क्या था ... यह Android ओएस के साथ संबंधित है, मैं 2.2 उपयोग कर रहा था और जब मैं 2.3.x में स्विच यह काम किया ...

+1

लेकिन मैं एंड्रॉयड 2.2 के साथ संगतता भी जरूरत है। – Nik

+3

मैं 4.0 का उपयोग कर रहा हूं और अभी भी एक समस्या है –

1

करने की कोशिश करो android:duplicateParentState="true" के साथ अलग लेआउट बनाएं और इसे अपनी कक्षा में बढ़ाएं। यह एंड्रॉयड 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); 
    } 

} 
संबंधित मुद्दे