您好我创建了一个名为Group
的简单自定义视图:
public class Group extends LinearLayout {
private TextView headerTextView;
public Group(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs,
R.styleable.Group, 0, 0);
String string = typedArray.getString(R.styleable.Group_headerText);
typedArray.recycle();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.widget_group, this, true);
headerTextView = (TextView) v.findViewById(R.id.header_text);
headerTextView.setText(string);
}
}
我希望在活动中动态创建它。我想设置自定义属性属性。 我找到了一些膨胀的解决方案,但我真的不想用它;这不是创建对象的正确方法。 我需要一个关于这个区域的例子
Group g = new Group(v.getContext(),arrt);
只是不知道如何设置arrt对象并在其中设置我的自定义属性
答案 0 :(得分:0)
好吧,通常在从XML扩展视图时使用此构造函数。如果您需要动态创建自定义视图,那么提供一个没有属性集的新构造函数,只有Context
并在那里为XML充气:
public Group(Context context) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.widget_group, this, true);
headerTextView = (TextView) v.findViewById(R.id.header_text);
}
您还需要一个单独的公共方法来提供标题文本:
public void setHeader(String header) {
headerTextView.setText(header);
}
将从动态创建此类的人那里调用。
I found some solution with inflating but I really don't want to use that; it's not proper way to create object.
我实际上并不同意,因为这样你将View
与Model
分开,这是编程中的基础设计模式。