2012-04-01 41 views

回答

0

在你的构造函数中,你得到一个AttributeSetobtainStyledAttributes你可以从xml访问属性,但其中一些是私有的,不能通过sdk访问。也可以看看TextView的源代码,特别是从@line 311开始的构造函数。

0

这里是你如何做到的。 这不是世界上最漂亮的东西,但它应该工作。

public class TestLayout extends LinearLayout { 
     private static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android"; 

     // XXX: This is defined in 
     // com.android.interal.R.styleable.LinearLayout_*** but are not accessible 
     // in the SDK :(
     private static final String ORIENTATION_ATTRIBUTE = "orientation"; 

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

     private void initialize(AttributeSet attrs) { 
      if (!isSet(attrs, ORIENTATION_ATTRIBUTE)) { 
       setOrientation(LinearLayout.VERTICAL); 
      } 
     } 

     private boolean isSet(AttributeSet attrs, String attribute) { 
      return attrs.getAttributeIntValue(ANDROID_NAMESPACE, attribute, -1) != -1; 
     } 

    }