android 中带有 gridView 的 LinearLayout

LinearLayout with a gridView in android

我正在尝试在 relativeLayout 中插入 linearlayout 和 gridviewlayout。像这样:

但我得到的结果是这样的:

如何解决这个问题?我也想在他们的文本附近相应地插入排序图像和过滤图像。这是我尝试过的 XML 布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="vertical" >

<GridView
    android:id="@+id/gridView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/bothbuttons"
    android:background="#FFFFFF"
    android:columnWidth="125dp"
    android:horizontalSpacing="3dp"
    android:numColumns="2"
    android:padding="5dp"
    android:scrollbars="vertical"
    android:verticalSpacing="3dp" >
</GridView>

<LinearLayout
    android:id="@+id/bothsortandfilter"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/grid_bg"
    android:baselineAligned="false"
    android:orientation="horizontal"
    android:paddingBottom="10dp" >

    <LinearLayout
        android:id="@+id/sortLayout"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".50"
        android:background="@color/grid_sort"
        android:gravity="center"
        android:orientation="horizontal"
        tools:ignore="NestedWeights" >

        <TextView
            android:id="@+id/sortText"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Sort"
            android:gravity="center"
            tools:ignore="ContentDescription" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/filterLayout"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@color/grid_filter"
        android:layout_weight=".50"
        android:gravity="center"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/filterText"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Filter"
            tools:ignore="ContentDescription" />
    </LinearLayout>
</LinearLayout>

</RelativeLayout>

有人可以帮我解决这个问题吗?我很难得到像上面第一张图片那样的结果?

试试这个方法看看是否可行

1) 首先给你的'bothsortandfilter'一个特定的高度layout.Then给它一个权重和2。 2) 对于 sortLayout 和 filterLayout 赋予权重 1.and 对于 sortLayout 赋予 marginright 值 0f 1 dp 对于 filterlayout marginleft 为 1 dp(这些用于分隔部分) 3) 最后为 gridview 添加一个 属性 marginbottom=(height which you set for->bothsortandfilter)+1 dp.

检查这个

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff"
    android:orientation="vertical" >

    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#FFFFFF"
        android:columnWidth="125dp"
        android:horizontalSpacing="3dp"
        android:numColumns="2"
        android:padding="5dp"
        android:scrollbars="vertical"
        android:verticalSpacing="3dp" >
    </GridView>

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar2"
        android:layout_gravity="right" />

    <LinearLayout
        android:id="@+id/bothsortandfilter"
        android:layout_width="match_parent"
        android:layout_height="58dp"
        android:background="@color/grid_bg"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/sortText"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="16dp"
            android:layout_height="match_parent"
            android:text="Sort"
            android:gravity="center"
            tools:ignore="ContentDescription" />
        <View
            android:layout_width="5dp"
            android:layout_height="match_parent"
            android:background="#000"/>
        <TextView
            android:id="@+id/filterText"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="16dp"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Filter"
            tools:ignore="ContentDescription" />

    </LinearLayout>

</LinearLayout>

用按钮替换文本视图

<Button
            android:id="@+id/sortText"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="16dp"
            android:layout_height="match_parent"
            android:text="Sort"
            android:gravity="center"
            tools:ignore="ContentDescription"
            android:background="#fff"
            android:drawableLeft="@drawable/ic_sort"/>//replace with your image

我只发布底部线性布局:

<LinearLayout
android:id="@+id/bothsortandfilter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal" >

<LinearLayout
    android:id="@+id/sortLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingBottom="10dp"
    android:paddingTop="10dp" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/sortText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Sort" />
</LinearLayout>

<View
    android:layout_width="2dp"
    android:layout_height="match_parent"
    android:background="@android:color/darker_gray" />

<LinearLayout
    android:id="@+id/filterLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingBottom="10dp"
    android:paddingTop="10dp" >

     <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/filterText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Filter" />
</LinearLayout>

希望对您有所帮助!

为您的排序和筛选器布局提供背景(较深的灰色阴影)。 然后在 bothsortandfilter 中提供一些 layout_margin 的 2dp。

对于中间的 space,您可以为 filterLayout 元素提供 margin_left,为 sortLayout 提供 margin_right。我认为 5dp 的值应该可以解决问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="3">

<GridView
    android:id="@+id/grid"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="30dp"
    android:layout_weight="2.52"
    android:columnWidth="100dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="2"
    android:stretchMode="columnWidth" />

<LinearLayout
    android:id="@+id/bothsortandfilter"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.5"
    android:orientation="horizontal"
    android:weightSum="2.2" >

    <TextView
        android:id="@+id/sortText"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Sort" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.2"
        android:background="#000" />

    <TextView
        android:id="@+id/filterText"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:padding="16dp"
        android:text="Filter" />
</LinearLayout>