最近在研究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;
以上纯属个人理解,如有误区,请指出