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

最近在研究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;  

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

猜你喜欢

转载自blog.csdn.net/u014774589/article/details/50436100