在 Android 中扩展 LinearLayout 时如何将附加参数传递给构造函数?
How to pass additional arguments to a Constructor when extending a LinearLayout in Android?
我有以下问题,如果我有 class 扩展 LinearLayout,例如:
public class ExtendedSeekbarLayout extends LinearLayout { ..}
我想将额外的参数传递给我的布局,我该怎么做?我知道我可以拥有以下构造函数,例如:
public ExtendedSeekbarLayout (Context context) {
super(context);
}
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle) {
super(context, attributeSet, defStyle);
}
但我想要类似的东西:
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle, int position) {
super(context, attributeSet, defStyle);
init(position);
}
我不确定这是否可行,如果不可行,那该怎么做?
非常感谢和干杯,pingu
您共享的这个构造函数应该完全按照您的预期工作。
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle, int position) {
super(context, attributeSet, defStyle);
init(position);
}
顺便说一句,你不一定需要这个构造函数,只要你调用
super(context);
如果以编程方式实例化视图,您可以这样做:
public ExtendedSeekbarLayout (Context context, int position) {
super(context);
init(position);
}
但是,如果您谈论的是从 xml 发送自定义值,您实际上并没有调用构造函数,那么您应该看看这个答案:
我有以下问题,如果我有 class 扩展 LinearLayout,例如:
public class ExtendedSeekbarLayout extends LinearLayout { ..}
我想将额外的参数传递给我的布局,我该怎么做?我知道我可以拥有以下构造函数,例如:
public ExtendedSeekbarLayout (Context context) {
super(context);
}
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle) {
super(context, attributeSet, defStyle);
}
但我想要类似的东西:
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle, int position) {
super(context, attributeSet, defStyle);
init(position);
}
我不确定这是否可行,如果不可行,那该怎么做?
非常感谢和干杯,pingu
您共享的这个构造函数应该完全按照您的预期工作。
public ExtendedSeekbarLayout (Context context, AttributeSet attributeSet, int defStyle, int position) {
super(context, attributeSet, defStyle);
init(position);
}
顺便说一句,你不一定需要这个构造函数,只要你调用
super(context);
如果以编程方式实例化视图,您可以这样做:
public ExtendedSeekbarLayout (Context context, int position) {
super(context);
init(position);
}
但是,如果您谈论的是从 xml 发送自定义值,您实际上并没有调用构造函数,那么您应该看看这个答案: