我正在尝试创建一个自定义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中,如果可能的话)?
答案 0 :(得分:10)
您可以使用:
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;
}
}
答案 1 :(得分:0)
试试这个:
p.horizontalMargin = 0;
答案 2 :(得分: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);
PS。 220 是DialogFragment高度,根据需要更改
答案 3 :(得分: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);
这对我有用,希望这对你也有帮助
答案 4 :(得分:-1)
尝试使用LayoutParams.MATCH_PARENT。 Fill_parent被重新指定。此外,如果您为视图设置的填充是正常的,而不是填充其父视图。