在片段android中创建动态布局

时间:2017-07-17 08:33:38

标签: android android-fragments dynamic view

我想在片段中创建动态布局。但是,当我尝试在OnCreate()中调用的网络响应上创建动态按钮布局时,但视图不会生成获取空白视图。在getComponents()中包含NetworkResponse(),响应基础将创建动态视图,如下所示

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return rootView;
}


@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   getComponents();
}
private void getComponents(){
    LinearLayout ll = new LinearLayout(getActivity());
                            ll.setOrientation(LinearLayout.VERTICAL);
                            ToggleButton toggleButton = new ToggleButton(getActivity());
                            toggleButton.setChecked(false);
                            toggleButton.setBackground(getActivity().getResources().getDrawable(R.drawable.toggle_selector));
                            ll.addView(toggleButton);
                            rootView = ll;
}

2 个答案:

答案 0 :(得分:0)

首先,您应该在onCreateView()而不是onCreate()

中创建动态布局

例如,

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
            savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment, container, false);

        RelativeLayout fragment_container = (RelativeLayout) view.findViewById(R.id
                .fragment_container);

        // Create a button 
        Button button = new Button(getContext());

        // add the button in fragment
        fragment_container.addView(button );

        return view;
    }

片段xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true">

</RelativeLayout>

简而言之,您正在添加片段容器的任何视图

答案 1 :(得分:0)

片段周期与Android中的Activity周期不同。 它有onCreate(),它创建片段活动

onCreateView()在这里创建并返回视图到其片段活动。如果你想添加动态视图,应该在这里添加。

然后在onViewCreated()这里它在成功创建视图后通知你并返回它的实例,现在你可以在这里设置监听器并使用setText getText和其他视图相关属性。