11
的剩餘空間

我有以下的設計,其中有在頂部的CollapsingToolbarLayout和下方有一個RelativeLayout的:機器人 - RelativeLayout的高度,以填補CollapsingToolBarLayout

enter image description here

我想要的RelativeLayout,以填補剩餘的空間直到底部,所以我可以中心這樣的內容:

enter image description here

我嘗試使用match_parent在RelativeLayout的,但它需要整根佈局的大小,包括CollapsingToolbarLayout:

enter image description here

我能做些什麼?這是完整的佈局代碼:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".UserActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorWhite"> 

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

     <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/activity_user_collapsingtoolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar android:id="@+id/activity_user_toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:contentInsetLeft="0dp" 
       app:contentInsetStart="0dp" 
       app:popupTheme="@style/AppTheme.PopupOverlay" 
       app:layout_collapseMode="pin"> 

       <!-- toolbar content --> 

      </android.support.v7.widget.Toolbar> 

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

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

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout android:id="@+id/activity_user_eventsalert" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:gravity="center" 
      android:orientation="vertical"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/calendar_remove_titlegray_48px"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp" 
       android:text="No events yet" 
       android:textSize="20sp" 
       android:textColor="@color/colorTitleGray"/> 
     </LinearLayout> 

    </RelativeLayout> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="10dp" 
     android:layout_gravity="bottom" 
     android:background="@drawable/shadow_bottom_white_to_transparent"/> 

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

您是否嘗試過運行應用程序或僅使用該預覽?因爲假設你的字符串資源爲RelativeLayout的行爲正確設置,代碼看起來正確 – darnmason

+0

這是正確的嗎? _match_parent_或_wrap_content_? @ darnmason –

+0

配對父母... – darnmason

回答

1

請參閱下面的代碼:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:id="@+id/activity_user_eventsalert" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@mipmap/ic_launcher"/> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:text="No events yet" 
      android:textColor="" 
      android:textSize="20sp"/> 
    </LinearLayout> 

</RelativeLayout> 
+0

這沒有幫助。問題在於RelativeLayout由於match_parent而太大。 – EboMike

5

嘗試Appbar滾動收聽

DisplayMetrics displayMetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
int height = displayMetrics.heightPixels; 
int width = displayMetrics.widthPixels; 

    mAppBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
      @Override 
      public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 

        int appbarHeight=appBarLayout.getHeight(); // or measured height 
        int totalHeightOfDevice=height; 
        int absoluteHeight=height-appbarHeight; 

        // position your view to absolute height.. 
      } 
     }); 
+0

我覺得使用這個方法絕對髒......但這似乎是解決CoordinatorLayout問題的唯一方法。適合我,謝謝! – EboMike

+0

很高興爲您效勞。 @EboMike –

-1
<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:layout_weight="1" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout android:id="@+id/activity_user_eventsalert" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/calendar_remove_titlegray_48px"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="20dp" 
       android:text="No events yet" 
       android:textSize="20sp" 
       android:textColor="@color/colorTitleGray"/> 
     </LinearLayout> 

    </RelativeLayout> 
+0

'CoordinatorLayout.LayoutParams'沒有'layout_weight'。 – EboMike

-1

中相對佈局添加以下代碼:

android:gravity="center" 
android:layout_weight="1" 
+0

'CoordinatorLayout.LayoutParams'沒有'layout_weight'。 – EboMike