无法充气自定义视图

时间:2014-01-06 11:25:58

标签: java android

我有一个名为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)

4 个答案:

答案 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这将解决您的问题