2017-01-15 110 views
0

我想在我的主要活動中添加一個自定義標題,該標題已包含底部導航器和一個作爲我想要顯示的fragments的容器的framelayout重疊主要活動內容的片段容器佈局

下面給出的代碼包含一個Linearlayout["@+id/application_header]應作爲應用標題起作用,但是插頭由fragmentcontainer[@+id/main_container]顯示的重疊標頭。

嘗試了屬性android:layout_belowandroid: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 - @+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_belowRelativeLayoutandroid:layout_above工作。順便說一句,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> 

還有一個(更好)的替代方案將使用CoordinatorLayoutToolbar

<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

對於「工具欄」解決方案,您仍然可以使用自定義視圖。從[引用](https://developer.android.com/reference/android/support/v7/widget/Toolbar.html):「工具欄可能包含以下可選元素的組合:一個或多個自定義視圖。如果一個子視圖的Toolbar.LayoutParams表示一個重力值CENTER_HORIZONTAL,那麼視圖將嘗試在工具欄中剩餘的可用空間中居中其他元素已被測量。「 –

0

你也可以通過添加這使得屏幕的佈局居中:

android:layout_centerInParent="true" 

還添加填充或保證金櫃面有重疊