如何垂直对齐3个不同高度的视图

时间:2017-08-07 06:09:01

标签: android xml android-layout android-linearlayout relativelayout

我有一个包含3个观看次数的主要活动:toolbarMainContainer& bottombar

  • toolbar的身高 60dp
  • MainContainer 匹配 - 父
  • bottombar 50dp

这个问题,bottombar根本没有显示,一旦MainContainer设置为match-parent,它就会填充布局的其余部分并推送bottombar离开可见区域!如果高度设置为wrap-content !!那怎么解决这个..!?

<RelativeLayout
  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"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


  <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@color/accent"/>

  <FrameLayout
    android:id="@+id/MainContainer"
    android:layout_below="@id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"/>

  <com.roughike.bottombar.BottomBar
    android:id="@+id/bottombar"
    android:background="@color/black"
    android:layout_below="@id/MainContainer"
    android:layout_width="match_parent"
    android:layout_height="50dp"/>


</RelativeLayout>

4 个答案:

答案 0 :(得分:3)

你应该使用

 android:layout_alignParentBottom="true"  
  

如果为true,则使此视图的下边缘与下边缘匹配   父母。容纳底部保证金。

尝试

<com.roughike.bottombar.BottomBar
    android:id="@+id/bottombar"
    android:background="@color/black"
    android:layout_below="@id/MainContainer"
    android:layout_width="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_height="50dp"/>

<强> FYI

Framelayout 部分添加 android:layout_marginBottom="50dp"

答案 1 :(得分:1)

  

MainContainer高度和宽度=匹配mainContainer 50dp中的parent和marign_bottom,即底栏的高度

if($taskCount==0){echo'<span class="badge badge-success">';}
else{echo'<span class="badge badge-success not">';}

答案 2 :(得分:0)

这对我有用

<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout
  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"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.truiton.bottomnavigation.MainActivity">
  <include
    android:id="@+id/mainToolbar"
    layout="@menu/toolbar" />

  <FrameLayout
    android:id="@+id/mainFrameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/mainToolbar"
    android:layout_above="@+id/mainBottomNavigation"
    />

  <android.support.design.widget.BottomNavigationView
    android:id="@+id/mainBottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="start"
    android:background="@color/bottom_navigation_view_background"
    app:itemIconTint="@menu/nav_item_color_state"
    app:itemTextColor="@menu/nav_item_color_state"
    app:menu="@menu/bottom_navigation_main"
    />

</RelativeLayout>

答案 3 :(得分:0)

更好的解决方案是使用具有垂直方向的LinearLayout并为其子项设置权重。请尝试以下代码。

<LinearLayout
  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"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">


  <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@color/accent"/>

  <FrameLayout
    android:id="@+id/MainContainer"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@color/colorPrimary"/>

  <com.roughike.bottombar.BottomBar
    android:id="@+id/bottombar"
    android:background="@color/black"
    android:layout_width="match_parent"
    android:layout_height="50dp"/>

</LinearLayout>