0

Я пытаюсь добавить пользовательский заголовок в свой основной вид деятельности, который уже содержит нижний навигатор и framelayout, который действует как контейнер для fragments, который я хочу отобразить.Разметка контейнера фрагмента, перекрывающая основное содержимое активности

Данный код содержит Linearlayout["@+id/application_header], который должен выступать в качестве заголовка приложения, однако заголовок отображается fragment. container[@+id/main_container] перекрывает заголовок.

Пробовал свойства android:layout_below и android:layout_above, но он по-прежнему перекрывается.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:design="http://schemas.android.com/apk/res-auto" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.amplitude.tron.volksradio.MainActivity"> 

<LinearLayout 
     android:id="@+id/application_header" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     android:gravity="center_horizontal"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="RADIO" 
      android:layout_gravity="center"/> 
    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/main_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/application_header" 
     android:layout_above="@+id/bottomNavigationBar" 
     android:layout_alignParentTop="true"> 
    </FrameLayout> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottomNavigationBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     design:menu="@menu/bottom_menu_navigation" 
     android:background="#50b1b5b9"> 

    </android.support.design.widget.BottomNavigationView> 

</RelativeLayout> 

ответ

0

Решил это сам, хотя может быть другое чистое решение и будет принято как ответ, если он окажется выполнимым.

Я просто добавил android:layout_marginTop="50dp", который так же, как высота элемента с идентификатором - @+id/application_header

PS- я не знаю, если это будет эффект экранов с различными размерами и моего устройства тестирования составляет лишь 5,5 дюйма в которой решение работало отлично.

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <LinearLayout 
      android:id="@+id/application_header" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:orientation="horizontal" 
      android:gravity="center_horizontal"> 

    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="RADIO" 
      android:layout_gravity="center"/> 
    </LinearLayout> 

    <FrameLayout 
      android:id="@+id/main_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@+id/application_header" 
      android:layout_above="@+id/bottomNavigationBar" 
      android:layout_alignParentTop="true"> 
    </FrameLayout> 

    <android.support.design.widget.BottomNavigationView 
      android:id="@+id/bottomNavigationBar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      design:menu="@menu/bottom_menu_navigation" 
      android:background="#50b1b5b9"> 
    </android.support.design.widget.BottomNavigationView> 
</LinearLayout> 
0

android:layout_below и android:layout_above работа с RelativeLayout. BTW, LinearLayout с одним TextView является избыточным. Вы можете использовать только TextView. Вот некоторые варианты того, как это сделать.

ИспользованиеRelativeLayout:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:design="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/application_header" 
     android:layout_width="match_parent" 
     android:layout_height="50dp"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="RADIO"/> 
    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/main_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/bottomNavigationBar" 
     android:layout_alignParentTop="true" 
     android:layout_below="@id/application_header"> 
    </FrameLayout> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottomNavigationBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="#50b1b5b9" 
     design:menu="@menu/bottom_menu_navigation"> 

    </android.support.design.widget.BottomNavigationView> 
</RelativeLayout> 

ИспользованиеLinearLayout:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:design="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/application_header" 
     android:layout_width="match_parent" 
     android:layout_height="50dp"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="RADIO"/> 
    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/main_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottomNavigationBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:background="#50b1b5b9" 
     design:menu="@menu/bottom_menu_navigation"> 

    </android.support.design.widget.BottomNavigationView> 
</LinearLayout> 

Еще один (лучше) альтернативой было бы использованиемCoordinatorLayout с Toolbar:

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:design="http://schemas.android.com/tools"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 

    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/main_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/application_header" 
     android:layout_above="@+id/bottomNavigationBar" 
     android:layout_alignParentTop="true" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottomNavigationBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     design:menu="@menu/bottom_menu_navigation" 
     android:background="#50b1b5b9"/> 

</android.support.design.widget.CoordinatorLayout> 
+0

Цените усилия, уже относительный макет в коде, но я хочу добавить его извините за это, попробовав второе решение, он просто нажал навигационное меню за пределы экрана. Последнее решение не то, что я ищу, потому что мой заголовок выполнен на заказ – IteratioN7T

+0

Для решения 'Toolbar' вы все равно можете использовать пользовательские представления. Из [ссылок] (https://developer.android.com/reference/android/support/v7/widget/Toolbar.html): «панель инструментов может содержать комбинацию следующих необязательных элементов: одно или несколько пользовательских представлений. Приложение может добавлять произвольные дочерние представления на Панели инструментов. Они появятся в этой позиции в макете. Если панель инструментов ChildLayoutParams для детского представления указывает значение Gravity для CENTER_HORIZONTAL, представление будет пытаться центрировать в пределах доступного пространства, оставшегося на Панели инструментов другие элементы были измерены ». –

0

Вы также можете сделать макет выравнивание по центру экрана, добавив следующее:

android:layout_centerInParent="true" 

также добавить отступы или запас упаковывают есть какие-либо небольшое количество перекрывающихся