我已经知道如何在这里创建自定义控件: Android interface - need suggestions on what widgets to use
如何创建SAME,但是在XML中创建控件的布局,只是在代码中进行膨胀?与此示例不同,我必须手动创建每个控件。
我用作基础的LinearLayout的第一个问题是不支持setView()命令。我应该延伸其他东西吗?
编辑:我找到了 这个: http://developer.android.com/guide/topics/ui/custom-components.html 还有这个: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List4.html好像我需要复合控制。我只需要一些代码。如何从XML中扩展控件的内容? BOth文章和样本说我可以,但如何?
答案 0 :(得分:23)
你必须使用这样的布局:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<View android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="#0F0"/>
<View android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="#0FF"/>
</merge>
其中<merge>
的意思是“将我内心的所有东西都放到父母那里,我会被夸大”。
然后在代码中:
public class CControl extends LinearLayout {
public CControl(Context context) {
this(context, null);
}
public CControl(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.tryout, this);
}
// ......
}
此时你可以使用复合控件,就像它是一个LinearLayout一样,所以你必须在外部布局中指定它是否是垂直的,或者你可以将它设置为默认的构造