【发布时间】:2014-06-17 13:26:01
【问题描述】:
我有一个扩展类View的A类。
我有一个 class B,它扩展了 class A。
现在我正在尝试将 class B 添加到我的 xml 中,但是我无法做到这一点,而我可以将 class A 添加到我的 xml 中。
我注意到的另一件事是,所有其他直接扩展 View 的自定义类在我的 xml 中都是可见的。
我想知道是否有任何方法可以添加一个扩展另一个类的类,该类又将View 扩展到我的xml 中?
注意:我使用的是正确的 xml 格式和完整的包名。
A 级
public class A extends View implements Serializable{
public A(final Context context, final AttributeSet attrs,
final int defStyle, final SomeEnum myType) {
super(context, attrs, defStyle);
}
public A(final Context context, final AttributeSet attrs,
final SomeEnum myType) {
this(context, attrs, 0, testStateType);
}
public A(final Context context,
final SomeEnum myType) {
this(context, null, 0, testStateType);
}
public A(final Context context,
final AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(final int w, final int h, final int oldw,
final int oldh) {
invalidate();
}
@Override
protected void onMeasure(final int widthMeasureSpec,
final int heightMeasureSpec) {
}
@Override
protected void onDraw(Canvas canvas) {
}
}
B 类
public class B extends A
{
public B(final Context context,
final AttributeSet attrs, final int defStyle, final SomeEnum myType)
{
super(context, attrs, defStyle, testStateType);
}
public B(final Context context, final AttributeSet attrs, final SomeEnum myType)
{
this(context, attrs, 0, testStateType);
}
public B(final Context context, final SomeEnum myType)
{
this(context, null, 0, testStateType);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
}
}
【问题讨论】:
-
“我无法添加”是什么意思?有些事情不允许你这样做?
-
这样做应该没有任何问题。您需要发布 XML
-
要在 xml 中添加自定义视图,您需要使用它的完整包名称,例如
<com.myproj.myview.CustomElement ...\> -
@AndroidWarrior 我认为 Ctrl+Space 不会显示您的自定义视图,我认为它只显示 android 的默认值。
-
@AndroidWarrior 这没有任何意义。您尝试输入和编译吗?
标签: android android-xml android-custom-view