Dialog与DialogFragment设置大小位置的区别

我在修改Android设置菜单源码遇到的问题,设置菜单源码路径:packages\apps\Settings.    wifi列表加载类为packages\apps\Settings\wifi  包下的wifiSettings类里调用packages\apps\Settings包下SettingsPreferenceFragment类的showDialog()方法,实现点击列表进行WiFi连接;参考http://blog.csdn.net/u014774589/article/details/50481775

Dialog的代码

@Override
	protected void onCreate(Bundle savedInstanceState) {
        WindowManager m = getWindowManager();
        Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
        android.view.WindowManager.LayoutParams p = getWindow().getAttributes();
        p.height = (int) (d.getHeight() * 0.5); // 高度设置为屏幕的0.5
        p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的1
        getWindow().setAttributes(p);
        getWindow().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);//水平置顶
		super.onCreate(savedInstanceState);
		
		if (mCopyHeaders != null && mCopyHeaders.size() > 0) {
			setListAdapter(new HeaderAdapter(this, mCopyHeaders));
		}
	}
DialogFragment的代码
	@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
			getDialog().getWindow().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
			WindowManager.LayoutParams lp = getDialog().getWindow().getAttributes();  
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;  
        if (mHeight == 0) {  
            lp.height = WindowManager.LayoutParams.WRAP_CONTENT;  
        } else {  
            lp.height = mHeight;  
        }  
        getDialog().getWindow().setAttributes(lp);  
            return super.onCreateView(inflater, container, savedInstanceState);
        }

你可能感兴趣的:(Android)