Gridview中的布局权重

时间:2016-06-26 18:43:56

标签: android

我希望卡片在各种屏幕尺寸时都可以填满整个屏幕。我想使用权重或任何其他可以做同样的选项。         

        <!--Card 1-->
        <android.support.v7.widget.CardView
            android:id="@+id/cardView1"
            android:layout_height="200sp"
            android:layout_width="150sp">

        </android.support.v7.widget.CardView>

        <!--Card 2-->
        <android.support.v7.widget.CardView
            android:id="@+id/cardView2"
            android:layout_height="200sp"
            android:layout_width="150sp">

        </android.support.v7.widget.CardView>

        <!--Card 3-->
        <android.support.v7.widget.CardView
            android:id="@+id/cardView3"
            android:layout_height="200sp"
            android:layout_width="150sp">

        </android.support.v7.widget.CardView>

        <!--Card 4-->
        <android.support.v7.widget.CardView
            android:id="@+id/cardView4"
            android:layout_height="200sp"
            android:layout_width="150sp">

        </android.support.v7.widget.CardView>
    </GridLayout>

I want the 4 cards to fit the entire screen for any device type

2 个答案:

答案 0 :(得分:0)

为此,您必须动态设置gridview的高度。 在您的Activity类中定义。

     public static int heighth;
     public static int width;
     DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        widthh = metrics.widthPixels;
        heighth = metrics.heightPixels;

然后在你的gridview适配器类中编写

gridView.setMinimumHeight((Home.heighth)/3-70);

此处主页是您的活动类Home.java。我除以3是因为我只有3行而减去70只是为了调整视图。希望它有所帮助!

答案 1 :(得分:0)

试试这个

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:weightSum="2">

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:weightSum="2">

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <android.support.v7.widget.CardView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>

这可能会在非常旧的设备上造成一些性能问题,但在新设备上应该不会出现问题。 此外,只需在卡片周围添加一些边距即可显示阴影 希望这会有所帮助。