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);
}