Android 如何设置扩展视图的布局(以编程方式)?

Android 如何设置扩展视图的布局(以编程方式)?,android,android-fragments,android-view,Android,Android Fragments,Android View,我有创建视图的片段。我需要它来处理多点触控事件 片段代码: public class ControllerFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.controll

我有创建视图的片段。我需要它来处理多点触控事件

片段代码:

public class ControllerFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);

        TouchEventView mView = new TouchEventView(v, container);
     //...
    }

    // ...
}
public class TouchEventView extends View {

    public TouchEventView(View v, ViewGroup container) {
       super(v.getContext());
    }

    // ...
}
public class ControllerFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);
        TouchEventView mView = new TouchEventView(v, inflater);  
    //...
    }

    // ...
}
public class TouchEventView extends LinearLayout {

    public TouchEventView(View v, LayoutInflater inflater) {
        super(v.getContext());
        inflater.inflate(R.layout.smart_tv_controller_fragment, this, true);
    }
但主要的问题是我的观点没有布局。它只是黑色的,没有按钮、文本视图和其他R.layout.controller\u fragment中的内容

那么,如何将布局设置为扩展视图

TouchEventView:

public class ControllerFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);

        TouchEventView mView = new TouchEventView(v, container);
     //...
    }

    // ...
}
public class TouchEventView extends View {

    public TouchEventView(View v, ViewGroup container) {
       super(v.getContext());
    }

    // ...
}
public class ControllerFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);
        TouchEventView mView = new TouchEventView(v, inflater);  
    //...
    }

    // ...
}
public class TouchEventView extends LinearLayout {

    public TouchEventView(View v, LayoutInflater inflater) {
        super(v.getContext());
        inflater.inflate(R.layout.smart_tv_controller_fragment, this, true);
    }

我发现主要的问题是TouchEventView扩展了视图。它应该扩展与R.layout.controller_片段中相同的布局

所以我将LayoutInflater添加到构造函数中,并从片段中传递它。然后我从TouchEventView构造函数中扩展了布局。现在看起来是这样的:

片段:

public class ControllerFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);

        TouchEventView mView = new TouchEventView(v, container);
     //...
    }

    // ...
}
public class TouchEventView extends View {

    public TouchEventView(View v, ViewGroup container) {
       super(v.getContext());
    }

    // ...
}
public class ControllerFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);
        TouchEventView mView = new TouchEventView(v, inflater);  
    //...
    }

    // ...
}
public class TouchEventView extends LinearLayout {

    public TouchEventView(View v, LayoutInflater inflater) {
        super(v.getContext());
        inflater.inflate(R.layout.smart_tv_controller_fragment, this, true);
    }
扩展视图(布局):

public class ControllerFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);

        TouchEventView mView = new TouchEventView(v, container);
     //...
    }

    // ...
}
public class TouchEventView extends View {

    public TouchEventView(View v, ViewGroup container) {
       super(v.getContext());
    }

    // ...
}
public class ControllerFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.controller_fragment, container, false);
        TouchEventView mView = new TouchEventView(v, inflater);  
    //...
    }

    // ...
}
public class TouchEventView extends LinearLayout {

    public TouchEventView(View v, LayoutInflater inflater) {
        super(v.getContext());
        inflater.inflate(R.layout.smart_tv_controller_fragment, this, true);
    }