【发布时间】:2014-03-27 17:20:06
【问题描述】:
我需要在 Android 中扩展 View 类以覆盖几个方法。
public class ExtendedView extends View {
public ExtendedView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null)
getParent().requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}
...
}
android 中有几个视图类型是从View 派生的,例如 ImageView 等。
他们无法访问 ExtendedView 类中的重写方法。
一种解决方案是为所有这些类创建扩展类,例如:
public class ExtendedImageView extends ImageView
并覆盖方法。
但是有没有更好的解决方案来避免这种代码冗余?
【问题讨论】:
-
您要创建什么类型的视图。是
ImageView有一些特殊属性,还是View有特殊属性。 -
@GauravGupta 我认为问题很明确。 OP 希望覆盖基类中的方法,这些方法由基类的所有子类继承。
-
有几个视图类型需要受到影响,例如 ImageView、MapView、WebView 等。我必须编写与在 View 类中编写的相同的重写方法。
-
我觉得你建议的解决方案很好。对于代码冗余,您可以集中代码并将基本参数传递给集中代码。
-
你说你想覆盖“一对”方法,但只显示
onTouchEvent。对于那个,我建议使用setOnTouchListener()而不是覆盖。也许其他方法也有类似的监听器可以设置?