Подтвердить что ты не робот

Поля/отступы макета в верхней части фрагмента диалога

При использовании фрагментов мои макеты нарушаются дополнительным пространством вверху, и я не знаю, откуда это происходит. Это выглядит так:

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 добавляет дополнительное пространство сверху

4b9b3361

Ответ 1

Попробуйте вызвать getWindow().requestFeature(Window.FEATURE_NO_TITLE); прямо перед setContentView(R.layout.<dialog_layout>); в onCreate() или onCreateView() вашего диалога.

Ответ 2

Существует два способа повторного использования/удаления этого пустого пространства в верхней части 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;
}

Ответ 3

Еще одно решение:

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

В этом примере используется тема по умолчанию для приложений. Также обратите внимание, что setStyle() необходимо вызвать в onCreate() в отличие от onCreateView() чтобы иметь эффект.