我有两个自定义视图,它们都从RelativeLayout继承。 两者都需要有相同的辅助方法。
f.e。
public static void setViewHeight(View v, int heightInDp) {
ViewGroup.LayoutParams layoutParams = v.getLayoutParams();
layoutParams.height = Helper.convertDpToPixel(heightInDp);
v.setLayoutParams(layoutParams);
}
正如您所看到的,目前我正在使用带有静态方法的帮助器/实用程序类来实现此目的。但是我对它感到不舒服并且寻找一种更干净的方式,而不是将视图传递给静态上下文。
另一个想法是编写一个从RelativeLayout扩展的抽象基类。但是如果我想稍后在其他自定义视图中使用辅助方法,我不希望被限制为RelativeLayout。
我的最后一个想法是为每个Helper方法创建一个类。 对于上面的例子,它可能是这样的:
public class LayoutTransition {
private View mView;
public LayoutTransition(View v) {
mView = v;
}
public View withHeight(int height) {
ViewGroup.LayoutParams layoutParams = mView.getLayoutParams();
layoutParams.height = height;
mView.setLayoutParams(layoutParams);
return mView;
}
}
但在这里我必须始终使用副本和许多对象。
这种困难的最佳做法是什么?