GridLayout 和 CardView 无法在所有设备上完美运行
Posted
技术标签:
【中文标题】GridLayout 和 CardView 无法在所有设备上完美运行【英文标题】:GridLayout and CardView is not working perfectly with all devices 【发布时间】:2019-02-15 23:33:19 【问题描述】:我有一个完整的 android 项目。我是由GridLayout
和CardView
制作的。一切都好。我已经用我所有的模拟器测试了这个应用程序,它们工作正常,但是当我试图用
熔岩虹膜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 无法在所有设备上完美运行的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:无法在GridLayout上添加视图。安卓/浏览/搜索$ OnUnhandledKeyEventListener
无法在 NativeScript 中的 GridLayout 内垂直对齐标签