我有一个名为BarGraph
的自定义视图,当我尝试对其进行充气时,它不会。
public class BarGraph extends View {
public BarGraph(Context context) {
super(context);
mContext = context;
// inflateView();
}
public BarGraph(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
// inflateView();
}
private void inflateView() {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//This line is wrong, can't inflate BarGraph
View v = inflater.inflate(R.layout.bar_graph,this, true);
hsv = (HorizontalScrollView) v.findViewById(R.id.hsv_bar_graph);
}
错误是:
The method inflate(int, ViewGroup, boolean) in the type LayoutInflater is not applicable for the arguments (int, BarGraph, boolean)
答案 0 :(得分:1)
祝你新的一年2014
请查看
inflater.inflate(R.layout.list_layout, null); // no parent
inflater.inflate(R.layout.schedule_layout, (ViewGroup) lst_item_view, false); // with parent` preserving LayoutParams
请检查日志并相应地工作,肯定会解决您的问题。
答案 1 :(得分:1)
第二个参数必须是ViewGroup
,而您的课程正在扩展View
。它需要一个ViewGroup,因为方法addView
是为ViewGroup
而不是View
定义的(这是布尔attachToRoot
所做的)
答案 2 :(得分:0)
试试这个:
View v = inflater.inflate(R.layout.bar_graph,(ViewGroup)this.getParent(), true);
或将ViewGroup设置为null。
答案 3 :(得分:0)
将自定义类扩展为ViewSwitcher
例如:customView extends ViewSwitcher
这将解决您的问题