2012-04-01 13 views

答えて

0

コンストラクタにはAttributeSetが、obtainStyledAttributesには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; 
     } 

    } 
関連する問題