Dialog与DialogFragment设置大小位置的区别
16lz
2021-01-26
我在修改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的代码
@Overrideprotected 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(安卓)多屏幕支持
- Picasso源码分析
- 关于使用Google提供的ZXing扫描二维码Demo只能横屏的解决办法
- 和菜鸟一起学android4.0.3源码之SD卡U盘等自动挂载配置
- [置顶] android中屏幕触摸事件
- Android中getLocationOnScreen和getLocationInWindow
- Android之屏幕方向改变以及onConfigurationChanged事件
- android framework 源码流程分析技巧
- 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采