GridView高度问题?

时间:2017-11-24 10:51:10

标签: android android-linearlayout android-gridview android-scrollview

我想在下面实现一个布局。 enter image description here

问题:无论屏幕大小如何,此布局中的所有视图组都应在单个屏幕中可见而不滚动。

我做了什么:我使用Gridview进行底部标签布局。以上图像布局高度是动态的,因为我必须保持16:9的比例。

我得到的是什么: enter image description here

  

我的底部布局是网格视图滚动。我的网格视图项目   是正方形。

代码:

GridViewItem

<com.app.phlebo.customViews.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ll_profile"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_gravity="bottom"
    android:background="@drawable/curved_edge"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/img_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

    <com.app.phlebo.customViews.TextViewPlus
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="37dp"
        android:layout_below="@+id/img_icon"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="@dimen/text_size"
        app:fonts="Montserrat-Light.otf" />
</com.app.phlebo.customViews.MyLinearLayout>

我的自定义线性布局(在网格视图项中使用)

public class MyLinearLayout extends LinearLayout

    {
    public MyLinearLayout(Context context) {
        super(context);
    }

    public MyLinearLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        final int width = getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec);
        setMeasuredDimension(width, width);
    }
}

我的content_main.xml

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:showIn="@layout/activity_main"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/curve_edge_transparent"
            android:id="@+id/rl">

            <include layout="@layout/layout_welcome"
                android:id="@+id/layout_dots"/>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="5dp">

            <RelativeLayout
                android:id="@+id/sp_date"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="3dp"
                android:background="@drawable/cornor_layout">


                <com.app.phlebo.customViews.TextViewPlus
                    android:layout_width="match_parent"
                    android:layout_height="35dp"
                    android:textSize="@dimen/text_size"
                    android:gravity="center_vertical"
                    android:textColor="@color/black"
                    android:id="@+id/spinner"
                    android:padding="5dp"
                    android:text="Today"
                    app:fonts="Montserrat-Medium.otf" />

                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="35dp"
                    android:id="@+id/img_dots"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentEnd="true"
                    android:gravity="center_vertical"
                    android:paddingRight="5dp"
                    android:src="@drawable/more_line" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_below="@+id/spinner"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginTop="5dp"
                    android:id="@+id/view_middle"
                    android:background="#E5E5E5"/>

                <RelativeLayout
                    android:id="@+id/rl_middle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/view_middle">

                    <View
                        android:id="@+id/center_shim"
                        android:layout_width="2dp"
                        android:layout_height="20dp"
                        android:layout_centerInParent="true"
                        android:layout_marginBottom="10dp"
                        android:layout_marginTop="10dp"
                        android:background="#E5E5E5" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/ll_accepted_request"
                        android:layout_centerInParent="true"
                        android:layout_toLeftOf="@+id/center_shim"
                        android:gravity="center"
                        android:orientation="vertical"
                        android:padding="2dp">

                        <com.app.phlebo.customViews.TextViewPlus
                            android:id="@+id/tv_count_accepted_request"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_toLeftOf="@+id/center_shim"
                            android:gravity="center"
                            android:text=""
                            android:textColor="@color/colorPrimary"
                            android:textSize="25sp"
                            app:fonts="Montserrat-SemiBold.otf" />


                        <com.app.phlebo.customViews.TextViewPlus
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:gravity="center"
                            android:text="Accepted Request"
                            android:textColor="@android:color/black"
                            android:textSize="@dimen/text_size"
                            app:fonts="Montserrat-Light.otf"/>
                    </LinearLayout>


                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:id="@+id/ll_pending_request"
                        android:layout_toRightOf="@+id/center_shim"
                        android:gravity="center"
                        android:orientation="vertical"
                        android:padding="2dp">

                        <com.app.phlebo.customViews.TextViewPlus
                            android:id="@+id/tv_count_rejected_request"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:gravity="center"
                            android:text=""
                            android:textColor="@color/dashboard_red"
                            android:textSize="25sp"
                            app:fonts="Montserrat-SemiBold.otf"/>

                        <com.app.phlebo.customViews.TextViewPlus
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:gravity="center"
                            android:text="Pending Request"
                            app:fonts="Montserrat-Light.otf"
                            android:textColor="@android:color/black"
                            android:textSize="@dimen/text_size" />

                    </LinearLayout>
                </RelativeLayout>

            </RelativeLayout>



            <GridView
                android:id="@+id/gridview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/sp_date"
                android:layout_alignParentBottom="true"
                android:layout_marginTop="3dp"
                android:numColumns="3"
                android:gravity="center"
                android:horizontalSpacing="5dp"
                android:verticalSpacing="5dp"
                />

        </RelativeLayout>
    </LinearLayout>
  

请帮我实现上述布局。我希望所有人都单身   没有滚动的屏幕。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。 您使用了&#34; com.app.phlebo.customViews.MyLinearLayout&#34;作为父布局。但它扩展了线性布局。 线性布局默认情况下是可滚动的。

因此,要避免网格组件进入屏幕下方(包含在屏幕内) 将图像视图的高度更改为特定高度。(添加网格组件后剩余的高度) 注意:我假设网格组件是固定的数字。其他

<ImageView
    android:id="@+id/img_icon"
    android:layout_width="wrap_content"
    android:layout_height="200dp"  // Find height needed and set
    android:layout_centerInParent="true" />