使用自定义XML属性创build复合控件

我一直试图将一个TextView和一个EditText组合成一个复合控件,它使用自定义xml元素为每个单独的元素传递默认值。 我一直在看这里的教程/文档:
build设化合物控制
传递自定义属性

我到目前为止。

Attrs.xml:

<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="FreeText"> <attr name="label" format="string" /> <attr name="default" format="string" /> </declare-styleable> </resources> 

我的主要布局:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.example.misc.FreeText android:layout_width="fill_parent" android:layout_height="wrap_content" myapp:label="label" myapp:default="default" /> </LinearLayout> 

我的复合控件,FreeText:

 public class FreeText extends LinearLayout { TextView label; EditText value; public FreeText(Context context, AttributeSet attrs) { super(context, attrs); this.setOrientation(HORIZONTAL); LayoutParams lp = new LayoutParams(0, LayoutParams.WRAP_CONTENT); lp.weight = 1; label = new TextView(context); addView(label, lp); value = new EditText(context); addView(value, lp); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.FreeText); CharSequence s = a.getString(R.styleable.FreeText_label); if (s != null) { label.setText(s); } a.recycle(); } } 

当我运行该程序时,我看到的视图确定,但我的CharSequence,s,的值始终为空。 有人能告诉我我要去哪里吗?

Solutions Collecting From Web of "使用自定义XML属性创build复合控件"

在你寻求帮助之后,当你注意到问题时,我讨厌它。

问题是我的自定义XML元素的命名空间应该是这样的:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.example.misc.FreeText android:layout_width="fill_parent" android:layout_height="wrap_content" myapp:label="label" myapp:default="default" /> </LinearLayout>