使用框架布局动态更改布局

时间:2015-04-14 06:32:03

标签: android android-layout listview android-fragments

我正在学习片段,我仍然陷入如何动态更改主要活动中的布局,我想根据列表视图中选择的列表文本调用不同的片段。

这是Fragment扩展类。我是否必须在此处执行任何操作,以便我可以返回我想要的布局?让我说我在listview中单击另一个选项,我希望Layout.arts而不是Layout.sports显示在主要活动中,如何才能完成?

public class MenuFragment extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        return inflater.inflate(R.layout.sports, container, false);
    }

}

这是listview的onclick监听器

private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.d("Hello","Clicked");
            // update the main content by replacing fragments
            MenuFragment frag = new MenuFragment();

            android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            MenuFragment fragment = new MenuFragment();
            fragmentTransaction.replace(R.id.drawer_layout, fragment, String.valueOf(position));
            fragmentTransaction.commit();

            mDrawerLayout.closeDrawer(mDrawerList);
        }
    }

2 个答案:

答案 0 :(得分:0)

如果业务逻辑与布局不同,您可以在onCreateView()的{​​{1}}中写下if - else条件

如果体育和艺术的商业逻辑不同,那么为体育和艺术创建两个不同的片段,Fragment方法替换适当的片段。

答案 1 :(得分:0)

我认为你可以使用Layout Inflater:

public void changeView(int layoutId){ 
    container.removeAllViewsInLayout(); 
    inflater.inflate(layoutId, container, true); 
}

容器和inflater来自onCreateView。