GridLayout 和 CardView 无法在所有设备上完美运行

Posted

技术标签:

【中文标题】GridLayout 和 CardView 无法在所有设备上完美运行【英文标题】:GridLayout and CardView is not working perfectly with all devices 【发布时间】:2019-02-15 23:33:19 【问题描述】:

我有一个完整的 android 项目。我是由GridLayoutCardView 制作的。一切都好。我已经用我所有的模拟器测试了这个应用程序,它们工作正常,但是当我试图用

打开我的应用程序时

熔岩虹膜505

Symphony Xplorer v60

它工作不完美。请看下图。

但是,当我在我的小米红米 4x 或任何其他 Android Studio 模拟器上安装了这个应用程序时,它会显示我的所有作品,如下图所示。

我的活动代码是:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@color/colorBG"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".Home">

    <!-- TODO: Update blank fragment layout -->
    <android.support.v4.widget.NestedScrollView
        android:layout_
        android:layout_>

        <LinearLayout
            android:orientation="vertical"
            android:weightSum="10"
            android:layout_
            android:layout_>

            <GridLayout
                android:id="@+id/mainGrid"
                android:layout_
                android:layout_
                android:layout_weight="8"
                android:alignmentMode="alignMargins"
                android:columnCount="2"
                android:columnOrderPreserved="false"
                android:padding="14dp"
                android:rowCount="3">

                <!-- Row 1 -->

                <!-- Column 1 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/news24"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/news24" />

                    </LinearLayout>

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

                <!-- Column 2 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/deshebideshe"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/deshebideshe" />


                    </LinearLayout>

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


                <!-- Row 2 -->

                <!-- Column 1 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/jamuna"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/jamuna" />

                    </LinearLayout>

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

                <!-- Column 2 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/satv"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/satv" />


                    </LinearLayout>

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


                <!-- Row 2 -->

                <!-- Column 1 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/jagobanglatv"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/jagobanglatv" />


                    </LinearLayout>

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

                <!-- Column 2 -->
                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/nrbtv"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/nrbtv" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/rtvmusic"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/rtvmusic" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/qtv"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/qtv" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/panvisiontv"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/panvisiontv" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/millennium"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/millennium" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/btvworld"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/btvworld" />

                    </LinearLayout>

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

                <android.support.v7.widget.CardView
                    android:layout_
                    android:layout_
                    android:layout_columnWeight="1"
                    android:layout_marginBottom="16dp"
                    android:layout_marginLeft="16dp"
                    android:layout_marginRight="16dp"
                    android:layout_rowWeight="1"
                    app:cardCornerRadius="8dp"
                    app:cardElevation="8dp">

                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:layout_gravity="center_horizontal|center_vertical"
                        android:layout_margin="16dp"
                        android:orientation="vertical">

                        <ImageView
                            android:id="@+id/probashibangla"
                            android:layout_
                            android:layout_
                            android:layout_gravity="center_horizontal"
                            android:src="@drawable/probashibangla" />

                    </LinearLayout>

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

            </GridLayout>

        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>

</FrameLayout>

我的 gradle 文件是:

apply plugin: 'com.android.application'

android 
    compileSdkVersion 28
    buildToolsVersion '28.0.1'
    defaultConfig 
        applicationId "net.gurujibd.ajkerkhobor"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 6
        versionName "5.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    productFlavors 
    


dependencies 
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'com.google.android.gms:play-services-ads:9.0.2'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:appcompat-v7:28.0.0-beta01'
    implementation 'com.android.support:support-v4:28.0.0-beta01'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0-beta01'
    implementation 'com.android.support:gridlayout-v7:28.0.0-beta01'
    implementation 'com.android.support:design:28.0.0-beta01'
    implementation 'com.devbrackets.android:exomedia:4.2.3'
    implementation 'com.android.support:gridlayout-v7:28.0.0-beta01'
    implementation 'com.github.ybq:Android-SpinKit:1.1.0'
    implementation files('libs/YouTubeAndroidPlayerApi.jar')

【问题讨论】:

建议..用户RecyclerView.. :( 尝试将 gridview 高度更改为 wrapcontent。不要硬核高度和宽度的值。使用匹配父项或包装内容以支持所有设备 当我将 grideview 高度更改为 match_parent 或 wrap_content 时,它将显示空白活动。什么都没有显示。怎么解决? @NagendraHariKarthick 没人帮我吗? 【参考方案1】:

您好,欢迎来到 Stack Overflow

如果您想归档您发布的设计,我建议您使用 RecycleView。 还将 GridView 布局管理器设置为您的 RecyclerView For GridView Click here

您正在开发支持不同屏幕尺寸(手机和平板电脑)的应用程序 click on this link

学习愉快!!!

【讨论】:

以上是关于GridLayout 和 CardView 无法在所有设备上完美运行的主要内容,如果未能解决你的问题,请参考以下文章

Intent GridLayout到4个活动

折叠 CardView 动画无法正常工作

Android Studio:无法在GridLayout上添加视图。安卓/浏览/搜索$ OnUnhandledKeyEventListener

无法在 NativeScript 中的 GridLayout 内垂直对齐标签

使用 RecyclerView 和 CardView 进行触摸反馈

如何在cardview中对齐文本和图像?