我将应用程序的界面分为三个区域:标题,内容和页脚。 标题具有固定大小(它只有一个图像),而页脚和内容的大小可以变化。
在分辨率较高的设备中,我想在页面上插入页眉和页脚,并为内容区域保留任何可用空间。 在低分辨率的设备中,考虑将内容长度尽可能少(类似于wrap_content)并在下面插入页脚(要求用户执行滚动以查看页脚)。
我得到的最好的是使用RelativeView:
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentTop="true" >
(...)
</LinearLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentBottom="true" >
(...)
</LinearLayout>
<FrameLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/footer"
android:layout_below="@+id/header"
android:lay >
(...)
</FrameLayout>
</RelativeLayout>
对于大型分辨率的分辨率工作,问题是小分辨率:内容小于它应该,因为它占用了页眉和页脚之间的空间。
我该如何解决这个问题? 我找不到另一种方法来获取内容假设屏幕的所有可用空间(大分辨率),因为我不能简单地使用fill_parent,因为内容在页眉和页脚之间。 我也尝试过使用min-height,但没有成功。
答案 0 :(得分:1)
顶级RelativeLayout
layout_height
生成fill_parent
。
然后FrameLayout
删除了layout_above
属性,只是说它在标题下面就足够了。
最后,FrameLayout
可能导致问题,因为当屏幕上只有1个元素并且它填满屏幕时,它通常会被使用。尝试用LinearLayout
替换它。我在我的某个应用中做了一些与你想要的完全相同的东西,布局是(请记住,在我的情况下,我换出了FrameLayouts
Fragments
LinearLayout
或RelativeLayout
基于{1}}。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainBack"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/transparent" >
<FrameLayout
android:id="@+id/headerFrag"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/homeAdMsgFrag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
<ListView
android:id="@+id/contactList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/homeAdMsgFrag"
android:layout_alignParentLeft="true"
android:layout_below="@id/headerFrag"
android:background="@color/transparent"
android:cacheColorHint="@color/transparent" >
</ListView>
</RelativeLayout>
答案 1 :(得分:0)
在我遇到这个问题的前几天,为了解决我所做的事情,我创建了 Header.xml 和 footer.xml ,并将这两个xml包含在我的所有其他内容中活动xmls ,因为这两个活动在所有其他活动中都很常见。
为了解决全球解决方案问题,我使用了weightsum和weight,应用权重也会修复页眉和页脚区域和内容区域。
这样我就在我的项目中完成了解决这个问题,试试看,希望它对你有用。
示例强>
<LinearLayout
android:weightSum="10"
android:orientation="vertical"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_weight="2"
android:layout_height="0dp"
android:orientation="vertical" >
(...)
</LinearLayout>
<FrameLayout
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_weight="6"
android:layout_height="0dp">
(...)
</FrameLayout>
<LinearLayout
android:id="@+id/footer"
android:layout_width="fill_parent"
android:layout_weight="2"
android:layout_height="0dp"
android:orientation="vertical" >
(...)
</LinearLayout>
</LinearLayout>
感谢。