【问题标题】:Bottom bar layout in androidandroid中的底栏布局
【发布时间】:2016-04-28 08:38:32
【问题描述】:
这是我的地图 - 底栏布局的 android xml 源代码。我在屏幕上显示一个巨大的地图,我需要在屏幕底部有一个 30dp 高的布局来显示一些像图像一样的标签。如何将水平线性布局推到页面底部?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height=" what here ? "
android:layout_width="fill_parent"
android:orientation="vertical">
<com.google.android.maps.MapView
android:id="@+id/map_view"
Map goes here. Almost full screen. Exactly full - 30dp;
/>
<LinearLayout>
I want 3 images here. Bottom of the screen.
</LinearLayout>
</RelativeLayout>
【问题讨论】:
标签:
android
layout
android-layout
android-xml
【解决方案1】:
使用android:layout_alignParentBottom="true"将线性布局设置在父级底部的线性布局和android:layout_above用于mapview将mapview设置在线性布局之上。
您的代码将是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<LinearLayout android:layout_height="30dip"
android:layout_width="fill_parent"
android:layout_alignParentBottom="true"
android:id="@+id/linearLayout1"
>
<!-- ... -->
</LinearLayout>
<com.google.android.maps.MapView
android:id="@+id/map_view"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_above="@+id/linearLayout1"
/>
</RelativeLayout>
【解决方案2】:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.maps.MapView
android:id="@+id/map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/rel_bottom" />
<RelativeLayout
android:id="@+id/rel_bottom"
android:layout_width="fill_parent"
android:layout_alignParentBottom="true"
android:layout_height="30dp" >
<ImageView
android:id="@+id/img1"
android:layout_width="40dp"
android:layout_height="fill_parent" />
<ImageView
android:id="@+id/img2"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/img1" />
<ImageView
android:id="@+id/img3"
android:layout_width="40dp"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/img2" />
</RelativeLayout>
</RelativeLayout>
【解决方案3】:
使用RelativeLayout 的属性,例如android:layout_alignParentBottom 和android:layout_above。
我会这样做:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<LinearLayout
android:id="@+id/footer"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:width="fill_parent"
android:height="30dp">
add your images here
</LinearLayout>
<com.google.android.maps.MapView
android:id="@+id/map_view"
android:height="fill_parent"
android:width="fill_parent"
android:layout_alignParentTop="true"
android:layout_above="@id/footer"/>
</RelativeLayout>
【解决方案4】:
尝试以下布局。使用android:layout_alignParentBottom="true" 是不够的,因为带有android:layout_height="fill_parent" 的MapView 将填满整个屏幕并隐藏LinearLayout。您还必须添加android:layout_above="@id/menu",这样它就不会隐藏它。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.maps.MapView
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/menu"
android:apiKey="@string/google_maps_api_key"
android:clickable="true" />
<LinearLayout
android:id="@+id/menu"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_alignParentBottom="true" >
</LinearLayout>
</RelativeLayout>