DialogFragment宽度设置

来源:互联网 发布:linux查看本地arp缓存 编辑:程序博客网 时间:2024/06/07 02:56

百度了很久 , 做一个问题的总结 , 项目中原来的dialog用得好好的 , 有时间重构代码 , 就把项目中的自定义dialog , 换成DialogFragment了 , 结果遇到设置宽度的问题.


原来在dialog中的代码:

public ProfessionDialog(Context context, String[] dataArr, TextView tv_selection) {
super(context, R.style.self_profession_dialog);
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_profession_job);
// 取消标题栏
// 在style里面进行设置
// 设置dialog宽度 , 屏幕的0.7
Window dialogWindow = getWindow();
dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);// 取消黑色边框
Display display = dialogWindow.getWindowManager().getDefaultDisplay();
LayoutParams params = getWindow().getAttributes();
params.width = (int) (display.getWidth() * 0.7);
dialogWindow.setAttributes(params);
setCanceledOnTouchOutside(true);

init();
}


虽然用的是过时的api , 但是 , 0.7的宽度是实现了.

到了DialogFragment , 在三个生命周期的方法里面 , 加入不同的代码.

@Override
public void onStart() {
super.onStart();
// DisplayMetrics dm = new DisplayMetrics();
// getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
// getDialog().getWindow().setLayout((int) (dm.widthPixels * 0.5),
// getDialog().getWindow().getAttributes().height);

Window window = getDialog().getWindow();
WindowManager windowManager = window.getWindowManager();
Display ds = windowManager.getDefaultDisplay();
LayoutParams attributes = window.getAttributes();
attributes.width = (int) (ds.getWidth() * 0.7);
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, R.style.confirm_dialog_fragment);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.confirm_dialog_frament, container, false);
return view;
}


折腾了好一会儿 , 之前把设置宽度的代码 , 都放在onCreateView()里面 , 现在把代码放到下一个生命周期里面就生效了 , 还是对api不熟悉 , 还得多看看源码才行 . 最后还有style的设置 , 设置了一下背景.


<style name="confirm_dialog_fragment" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/backgroud_3dp</item>
</style>

.

0 0