He creado un GridLayout con CardView dentro de un Viewpager. Mi diseño era lineal y para hacerlo desplazable envolví todo en un ScrollView. Pero no puedo desplazar mi pantalla. Cuando trato de desplazarme, no pasa nada. Cómo puedo hacer que estos elementos de cuadrícula se puedan desplazar. Soy un principiante en Android.

Mi archivo XML Gridlayout.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_marginTop="150dp"
        app:columnCount="2"
        app:rowCount="4">


        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_height="170dp"
            android:layout_marginLeft="10dp"
            app:cardCornerRadius="6dp"
            android:layout_marginStart="10dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />
        </android.support.v7.widget.CardView>

        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_height="170dp"
            android:layout_marginLeft="18dp"
            android:layout_marginStart="18dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />
        </android.support.v7.widget.CardView>

        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_height="170dp"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />

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

        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_marginTop="20dp"
            android:layout_height="170dp"
            android:layout_marginLeft="30dp"
            android:layout_marginStart="30dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />
        </android.support.v7.widget.CardView>
        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_height="170dp"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />

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

        <android.support.v7.widget.CardView
            android:layout_width="160dp"
            android:layout_marginTop="20dp"
            android:layout_height="170dp"
            android:layout_marginLeft="30dp"
            android:layout_marginStart="30dp">

            <ImageView
                android:layout_width="160dp"
                android:layout_height="130dp"
                android:src="@drawable/kerala" />
        </android.support.v7.widget.CardView>

    </android.support.v7.widget.GridLayout>
    </LinearLayout>
</ScrollView>
1
Nasim 10 sep. 2018 a las 08:04

4 respuestas

La mejor respuesta

Probar esto:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<android.support.v7.widget.GridLayout
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:layout_marginTop="150dp"
    app:columnCount="2"
    app:rowCount="4">


    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_height="170dp"
        android:layout_marginLeft="10dp"
        app:cardCornerRadius="6dp"
        android:layout_marginStart="10dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />
    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_height="170dp"
        android:layout_marginLeft="18dp"
        android:layout_marginStart="18dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />
    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_height="170dp"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />

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

    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_marginTop="20dp"
        android:layout_height="170dp"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />
    </android.support.v7.widget.CardView>
    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_height="170dp"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />

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

    <android.support.v7.widget.CardView
        android:layout_width="160dp"
        android:layout_marginTop="20dp"
        android:layout_height="170dp"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp">

        <ImageView
            android:layout_width="160dp"
            android:layout_height="130dp"
            android:src="@drawable/kerala" />
    </android.support.v7.widget.CardView>

</android.support.v7.widget.GridLayout>
</LinearLayout>
1
Jacob Celestine 10 sep. 2018 a las 06:39

Intente esto: main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v4.view.ViewPager
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

Page.xml

<android.support.v4.widget.NestedScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <GridLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:columnCount="2"
            android:rowCount="4">

            <!-- fill your grid -->

        </GridLayout>

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>
0
Mersad Esalati 10 sep. 2018 a las 06:52
  1. Crear una vista de desplazamiento
  2. Dentro de eso crea tu diseño de cuadrícula.
  3. Cuando agrega un elemento al diseño de cuadrícula, dependa del conteo de columnas El diseño de cuadrícula comenzará a desplazarse.

Ejemplo:

<ScrollView

    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.groot.rang.MainActivity">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10" >

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight = "1"
        android:columnCount="3"
        android:rowCount="5"
        android:alignmentMode="alignMargins"
        android:columnOrderPreserved="false"
        android:padding="10dp">

        //Your grid items..

    </GridLayout>

    </LinearLayout>
</ScrollView>
-2
Waseem 10 sep. 2018 a las 06:06
<android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_marginTop="150dp"
        app:columnCount="2"
        app:rowCount="4">

Elimine la altura estática de GridLayout, entonces funcionará bien.

0
Ankita-user3449434 10 sep. 2018 a las 07:29