12

我正在尝试创建一个自定义DialogFragment,它延伸到我的屏幕的整个宽度(或者更确切地说,父片段)。虽然我可以使DialogFragment透明的边框,但仍然有一个我无法摆脱的左右填充。

这是我的片段:

public static class LoaderDialog extends DialogFragment {

    static LoaderDialog newInstance() {
        LoaderDialog f = new LoaderDialog();

        return f;
    }

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

        WindowManager.LayoutParams p = getDialog().getWindow().getAttributes();
        p.y = getSupportActionBar().getHeight();

        getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        getDialog().getWindow().setGravity(Gravity.TOP);
        getDialog().getWindow().setAttributes(p);

        return view;
    }
}

这是一张图片,它的样子: 截屏

如您所见,DialogFragment(红色的东西)在侧面有一些边距。我希望那些消失。知道如何做到这一点(如果可能的话,在java中)?

4

5 回答 5

14

您可以使用:

WindowManager.LayoutParams wmlp = getDialog().getWindow().getAttributes();
wmlp.gravity = Gravity.FILL_HORIZONTAL; 

完整示例:

public class TextEditor extends DialogFragment {

    public TextEditor () {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_text_editor, container);

        WindowManager.LayoutParams wmlp = getDialog().getWindow().getAttributes();
        wmlp.gravity = Gravity.FILL_HORIZONTAL;

        return view;
    }
}
于 2014-10-17T23:18:59.210 回答
0

尝试这个:

p.horizontalMargin = 0;
于 2014-08-18T03:40:51.680 回答
0

在您的 style.xml 文件中创建一个样式元素。将下面的代码复制到您的 style.xml 文件中

<style name="CustomDialog" parent="@android:style/Theme.Holo.Light" >
<item name="android:windowBackground">@null</item>
<item name="android:windowIsFloating">true</item>

然后在 DialogFragment 类的 createDialog 方法中,

dialog = new Dialog(getActivity(), R.style.CustomDialog);

这对我有用,希望这对你也有帮助

于 2017-05-04T09:39:07.350 回答
0

为 DialogFragment 使用此样式

<item name="android:windowNoTitle">true</item>
<item name="android:padding">0dp</item>

或在 DialogFragment 的 onCreateView 方法中使用此代码

    Display display = getActivity().getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, **220**, getResources().getDisplayMetrics());
    getDialog().getWindow().setLayout(width,px);

附言。220是 DialogFragment 的高度,随意更改

于 2016-03-10T22:00:22.197 回答
-1

尝试改用 LayoutParams.MATCH_PARENT。不推荐使用 Fill_parent。此外,如果您为视图设置了一个正常的填充,即不会填充其父视图。

于 2013-08-09T15:48:36.320 回答