首先,这是我的activity_main.xml文件的结构:
我试图将第二个线性布局(不包含地图的布局)粘贴到底部,而地图占据屏幕上的其余空间(在布局之前停止)。我目前在我的GS3上运行的解决方案很好,但第二个LinearLayout没有显示在较小的屏幕设备上(可能是因为我的第一个LinearLayout的定义尺寸(480dp)?)
我怎样才能做到这一点?
这是我的xml文件:
<?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">
<LinearLayout
android:id="@+id/map_layout"
android:layout_width="match_parent"
android:layout_height="480dp"
android:orientation="vertical">
<fragment
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:layout_below="@+id/map_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price_seekbar" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="1€"
android:progress="3"
android:max="15"
android:id="@+id/price_seekbar_value" />
<ImageButton
android:id="@+id/advanced_search_image_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:src="@drawable/advanced_search_icon" />
</LinearLayout>
</RelativeLayout>
感谢您的建议。
答案 0 :(得分:2)
将以下内容替换为XML ...
对于第一个LinearLayout
,请替换此...
<LinearLayout
android:id="@+id/map_layout"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/rest_of_layout"
android:orientation="vertical" >
对于第二个LinearLayout
,请替换此...
<LinearLayout
android:id="@+id/rest_of_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
答案 1 :(得分:0)
您可以将第二个布局包含在片段下的第一个布局中,并设置第一个布局的layout_height =“match_parent”。这样它就适用于每个屏幕尺寸。使用静态值来定义高度并不是一件好事......并且在两个布局上设置相同的ID并不好! ;)让我知道它是否是一个很好的解决方案! :)
答案 2 :(得分:0)
在第1 LinearLayout
次使用
android:layout_above="@+id/second_linearlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
在第二LinearLayout
次使用
android:layout_alignParentBottom="true"
我认为它会解决你的问题
答案 3 :(得分:0)
将RelativeLayout替换为LinearLayout并使用android:gravity="bottom"
。
对于第一个LinearLayout(使用Maps),将属性设置为:
android:layout_height="0dip"
android:layout_weight="0.4"
另一种方式 - 第二种布局使用android:layout_alignParentBottom="true"
,并将id更改为不同的内容(例如“map_buttons”)
首次使用布局
android:layout_above="@id/map_buttons"
android:layout_height="match_parent"