在Android上分组多个控件

时间:2012-04-06 08:38:34

标签: android android-layout

我用RelativeLayout创建了一个窗口,并在其中插入了两个控件;一个是GridView,另一个是WebView。

我将图像绑定到gridview以使用类似菜单,我将在webview中加载一个html页面以供广告使用。

但我对这些控件有疑问。 例如,如果用户垂直滚动gridview,它就会在webview后面消失,但是当我用户滚动gridview时,我期待webview也会滑动gridview。

所以我想知道,我可以将这些控制组合在一起同时行动吗?

我的另一个方向问题是,当我将设备转为横向模式时,webview正在从屏幕上消失。

最后,如果我设置GridView的layout_height属性fill_parent,我看不到WebView,所以我将其设置为wrap_content。但是这次WebView没有在底部对齐,它在GridView之后对齐,屏幕底部和webview之间有空格。

     <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:background="@drawable/bg480480">

     <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:numColumns="auto_fit"
    android:verticalSpacing="45dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="150dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:layout_marginTop="30dp"
    android:scrollbars="none"
    android:layout_alignParentTop="true"   />

        <WebView
        android:id="@+id/webView1"
        android:layout_width="wrap_content"      
        android:layout_height="wrap_content"
        android:scaleType="centerInside"
        android:gravity="bottom"
        android:layout_below="@id/gridview"   />

</RelativeLayout>

以下是一些屏幕截图。

First open (portrait mode)

same scren, landscape mode

same screen again, portait mode after landscape

3 个答案:

答案 0 :(得分:0)

我想主要的问题是GridView和Webview都指定了layout_height="fill_parent"。我猜你可能不希望GridView填满整个父区域,所以请改用"wrap_content"

我不太了解页面所需的布局,但我建议使用LinearLayout来启动和舒适。这实际上取决于网格视图和Web视图应显示的内容以及主要内容的位置。

在下面的示例中,我简单地假设您的网络视图想要占据屏幕的大部分。            

     <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:background="#ff0000"
    android:numColumns="auto_fit"
    android:verticalSpacing="45dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="150dp"
    android:stretchMode="columnWidth"
    android:layout_marginTop="30dp"
    android:scrollbars="none"
    />

        <WebView
            android:id="@+id/webView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#00ff00"
            android:scaleType="centerInside" />

</LinearLayout>

如果假设不正确,那么您可能会反过来指定它(Webview =&gt; wrap_conent

答案 1 :(得分:0)

改进WebView布局代码,如下所示:

<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/webView1"
    android:layout_alignParentTop="true"
    android:layout_marginTop="30dp"
    android:columnWidth="150dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:scrollbars="none"
    android:stretchMode="columnWidth"
    android:verticalSpacing="45dp" />

<WebView
    android:id="@+id/webView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="bottom"
    android:scaleType="centerInside" />

仅供参考,android:layout_alignParentBottom="true"将在屏幕底部显示WebView。并在GridView中包含android:layout_above="@+id/webView1"

试试这个布局代码。

答案 2 :(得分:0)

您需要添加     android:layout_above="@+id/webView1" 在你的gridview中 也 android:layout_alignParentBottom="true" 在您的网页浏览中

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:background="@drawable/bg480480"
    android:orientation="vertical"
    >

     <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:numColumns="auto_fit"
    android:verticalSpacing="45dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="150dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:layout_above="@+id/webView1"
    android:layout_marginTop="30dp"
    android:scrollbars="none"
    android:layout_alignParentTop="true"   />

        <WebView
             android:id="@+id/webView1"
             android:layout_width="wrap_content"      
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true"
             android:layout_below="@id/gridview"   />

</RelativeLayout>