0

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

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

但我对这些控件有疑问。例如,如果用户垂直滚动gridview,它会消失在webview 后面,因为我期待webview 在用户滚动gridview 时也会与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>

这是一些屏幕截图。

首次打开(人像模式)

相同的屏幕,横向模式

再次相同的屏幕,横向后的纵向模式

4

3 回答 3

0

我猜主要问题是 GridView 和 Webview 都指定了layout_height="fill_parent". 我猜您可能不希望 GridView 填充整个父区域,因此请"wrap_content"改用。

我不太了解所需的页面布局,但我建议使用 LinearLayout 开始并感到舒适。这实际上取决于网格视图和 Web 视图应该显示什么以及您的主要内容在哪里。

在下面的示例中,我只是假设您的 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=> wrap_conent

于 2012-04-06T08:54:29.687 回答
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。并包含 android:layout_above="@+id/webView1"在 GridView 中。

试试这个布局代码。

于 2012-04-06T09:13:59.910 回答
0

您还需要在您的 webview 中添加 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>
于 2012-04-06T12:10:15.083 回答