Fragment动态添加控件(Button/Layout/...)

来源:互联网 发布:日记本软件电脑版 编辑:程序博客网 时间:2024/06/06 19:25

最近在研究Andriod5.0系统Settings源码的修改,从主界面进去Settings中大部分都是使用Fragment,Fragment的页面修改是通过重修onCrearteCiew()方法来实现的,下面是我把View的高度修改为800像素,预留部分空间来添加其他的控件,例子Button,Layout等等

    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View rootView = super.onCreateView(inflater, container, savedInstanceState);        /*定义LayoutParams 为了获得当前View的属性*/        ViewGroup.LayoutParams lpLayoutParams = rootView.getLayoutParams();        //设置View的高度,也可以设置其他属性        lpLayoutParams.height = 800;        rootView.setPadding(50, 50, 50, 50);        //LayoutParams 属性赋予Fragment当前的View        rootView.setLayoutParams(lpLayoutParams);        return rootView;    }

通过重写onActivityCreated,自己定义了一个RelativeLayout ,并且在RelativeLayout 中添加Button

@Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //定义了一个RelativeLayout ,LayoutParams 是控件属性        FrameLayout.LayoutParams returnLayoutparams = new FrameLayout.                LayoutParams(LayoutParams.MATCH_PARENT, h_buttonscreen);        returnLayoutparams.gravity = Gravity.BOTTOM|Gravity.RIGHT;              RelativeLayout returnLayout = new RelativeLayout(getActivity());        returnLayout.setPadding(50, 10, 50, 50);        //这里是我自己背景资源        returnLayout.setBackgroundResource(R.drawable.beijing);        //定义了一个Button,        FrameLayout.LayoutParams returnButtonparams = new FrameLayout.LayoutParams                (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);         final Button returnbutton = new Button(getActivity());        returnbutton.setBackgroundResource(R.drawable.flst_return_button);        returnbutton.setLayoutParams(returnButtonparams);        //Layout中添加Button        returnLayout.addView(returnbutton);        //View中添加layout        getActivity().addContentView(returnLayout, returnLayoutparams);        returnbutton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO 自动生成的方法存根                Toast.makeText(getActivity(), "返回", Toast.LENGTH_LONG).show();            }        });        }

//这样你的Fragment页面就可以根据自己需求来写。
修改页面,就得知道屏幕的大小,这样的话,你可以更好的来布局页面,通过以下代码可以实现获得屏幕宽度和高度

        DisplayMetrics dm =getResources().getDisplayMetrics();          int w_screen = dm.widthPixels;          int h_screen = dm.heightPixels;  

以上纯属个人理解,如有误区,请指出

1 0