嵌套的Android视图,静态标题视图

时间:2010-08-31 21:46:34

标签: android

为了缩短我的解释,我已经把这个“模型”做成了我想要实现的目标。 我想创建一个可重用的页眉,页脚和一个通用视图组,我可以填写所需的任何内容。 ListActivity,GridView ......等。

alt text

到目前为止,我尝试了几种不同的方法,但没有任何运气。我的第一次尝试是写出三个基本观点。一个可以充当容器的RelativeLayout。我曾经添加标题(工作),编写了GridView(工作),当尝试使用include连接页脚时,无论我使用哪种重力,它都不会锚定在屏幕的底部。

我目前正试图去学习android的视图系统。所以,我的第一个婴儿步骤。获取GridView处理从适配器中提取的图像。 (基本上是来自android网站的'Hello GridViews'演示 - 完成,有效)

alt text

接下来的宝贝步骤。尝试在GridView上面添加一个静态标头...灾难。我觉得我错过了一个重要的垫脚石来实现这个目标,任何正确方向的提示都会受到赞赏。我不太明白为什么包含Button的LinearLayout将GridView推出屏幕(它在HiearchyViewer中),当高度只是“wrap_content”时应该是“44dip”。

alt text

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    >
        <Button
            android:layout_width="fill_parent"
            android:layout_height="44dip"
            android:text="test"
        />
    </LinearLayout>
    <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
         android:id="@+id/gridview"
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent"
         android:columnWidth="112dip"
         android:numColumns="auto_fit"
         android:verticalSpacing="0dp"
         android:horizontalSpacing="0dp"
         android:stretchMode="columnWidth"
         android:gravity="center"
    />
</LinearLayout>

//编辑,修复xml。

编辑2010年10月25日:这是我现在使用的解决方案。每个活动都有自己的视图,活动会膨胀。 “可重用”视图包含在内

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<include layout="@layout/titlebar" />
<ListView
    android:id="@+id/standingsListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    android:background="#FFF"
/>
<include layout="@layout/ad" />
</LinearLayout>

1 个答案:

答案 0 :(得分:5)

至少我可以帮你解决“按钮”问题:你遗漏的神奇属性是android:orientation

如果没有此属性,则设置android:orientation="horizontal"。这意味着每个视图都排列在水平线上,因此您的按钮右侧是您的网格,由于您的按钮所在的LinearLayout具有layout_width="fill_parent"

,因此无法显示该网格

最后一个提示:少即是多,如果布局中只有一个视图,请删除布局并放置视图。 (如果您只想在LinearLayout中使用一个按钮)