对话框片段顶部的布局边距/填充

时间:2013-08-27 12:09:14

标签: android layout user-interface android-fragments android-dialogfragment

使用片段时,我的布局受到顶部额外空间的干扰,我不知道它来自何处。它看起来像这样:

enter image description here

这个空地的可能来源是什么?我还没有找到主题或一些样式设置,或者这个空间是否留给了动作栏?我真的想摆脱这个。

以下是相应的布局xml和实例化对话框的代码:

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_margin="5dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <ProgressBar
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/search_progress"
        style="?android:attr/progressBarStyle"
        android:indeterminate="true" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/search_progress"
            android:text="Searching for:" />

        <TextView
            android:id="@+id/searchingNameTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:layout_alignBottom="@+id/search_progress"
            android:layout_alignLeft="@+id/textView1"
            android:text="Barcelona" />

</RelativeLayout>

爪哇:

FragmentManager fm = this.getSupportFragmentManager();
mSearchingDialog = new SearchingDialogFragment();
Bundle bundle = new Bundle();
bundle.putString("name", mCityToAdd.userName());
mSearchingDialog.setArguments(bundle);
mSearchingDialog.show(fm, TAG);

我在这里也问了这个问题,认为这是一个与滚动视图相关的问题,但空间出现在我的所有片段中:

ScrollView adds extra space on top

3 个答案:

答案 0 :(得分:24)

尝试在对话框的getWindow().requestFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.<dialog_layout>);方法中 onCreate()之前调用onCreateView()正确

答案 1 :(得分:19)

有两种方法可以重用/删除DialogFragment顶部的空白区域。

如果您想简单删除它:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); //  <--
    View view = inflater.inflate(R.layout.fragment_dialog, container, false);
    return view;
}

如果您想将其重复用于对话标题:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     getDialog().setTitle("Some title..."); //  <--
     View view = inflater.inflate(R.layout.fragment_dialog, container, false);
     return view;
}

答案 2 :(得分:4)

又一个解决方案:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NO_TITLE, getActivity().getApplicationInfo().theme);
    }

此示例使用应用程序默认主题。另请注意,setStyle()需要调用onCreate()而不是onCreateView()才能生成效果。