2012-04-01 40 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; 
     } 

    }