Android:LinearLayout 内的 CardView 使应用程序崩溃
Posted
技术标签:
【中文标题】Android:LinearLayout 内的 CardView 使应用程序崩溃【英文标题】:Android: CardView inside LinearLayout makes app to crash 【发布时间】:2021-11-07 04:28:23 【问题描述】:给定下一个xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<ScrollView
android:id="@+id/llCommunityMain"
android:layout_
android:layout_
android:paddingBottom="70dp"
android:scrollbars="none">
<LinearLayout
android:id="@+id/llCommunity"
android:layout_
android:layout_
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center">
<androidx.cardview.widget.CardView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvFindCollege"
android:layout_
android:layout_
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_marginTop="20dp"
android:layout_margin="10dp"
app:cardCornerRadius="5dp"
app:cardElevation="10dp"
app:cardBackgroundColor="#f5f5f5"
android:theme="@style/Theme.MaterialComponents.Light">
<com.testmepracticetool.toeflsatactexamprep.component.view.TMButton
android:id="@+id/btnSuggestImprovements"
android:layout_
android:layout_
android:textAlignment="center"
android:layout_gravity="center_horizontal"
android:theme="@style/Theme.MaterialComponents.Light"
android:background="@android:drawable/dialog_holo_light_frame"
style="@style/button_text_default"
android:text="@string/activitycommunity_button_suggestimprovements" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_
android:layout_
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_marginTop="20dp">
<com.testmepracticetool.toeflsatactexamprep.component.view.TMButton
android:id="@+id/btnFindCollege"
android:layout_
android:layout_
android:textAlignment="center"
android:layout_gravity="center_horizontal"
android:background="@android:drawable/dialog_holo_light_frame"
style="@style/button_text_default"
android:text="@string/community_button_findcollege" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:id="@+id/llCommunityKhan"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_marginTop="20dp">
<com.testmepracticetool.toeflsatactexamprep.component.view.TMButton
android:id="@+id/btnKhan"
android:layout_
android:layout_
android:textAlignment="center"
android:layout_gravity="center_horizontal"
android:background="@android:drawable/dialog_holo_light_frame"
style="@style/button_text_default"
android:text="@string/activitykhan_title" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<include layout="@layout/footermenu_default" />
</RelativeLayout>
页脚.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llMainMenu"
android:baselineAligned="false"
android:layout_
android:layout_
android:orientation="horizontal"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_alignParentBottom="true"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="10dp"
android:visibility="gone"
android:paddingTop="10dp"
android:background="@drawable/layout_border_top">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnTests"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:src="@drawable/button_main_tests" />
<TextView
android:id="@+id/tvMainMenuTests"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="@string/mainmenu_button_tests"
android:textColor="#a8a8a8"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnRecords"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:src="@drawable/button_main_records" />
<TextView
android:id="@+id/tvMainMenuRecords"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="@string/mainmenu_button_records"
android:textColor="#a8a8a8"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/llMainMenuImportExport"
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal"
android:visibility="gone">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnImportExport"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:visibility="gone"
android:src="@drawable/button_records_importexport" />
<TextView
android:id="@+id/tvMainMenuImportExport"
android:layout_
android:layout_
android:paddingTop="5dp"
android:text="@string/mainmenu_button_importexport"
android:textColor="#a8a8a8"
android:textSize="11sp"
android:visibility="gone"/>
</LinearLayout>
<LinearLayout
android:id="@+id/llMainMenuProgress"
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal"
android:visibility="gone">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnProgress"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:visibility="gone"
android:src="@drawable/button_records_progress" />
<TextView
android:id="@+id/tvMainMenuProgress"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="@string/mainmenu_button_progress"
android:textColor="#a8a8a8"
android:textSize="11sp"
android:visibility="gone"/>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnCommunity"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:src="@drawable/button_main_community" />
<TextView
android:id="@+id/tvMainMenuCommunity"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="@string/mainmenu_button_community"
android:textColor="#a8a8a8"
android:textSize="11sp" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight=".20"
android:gravity="center_horizontal">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/btnUser"
android:layout_
android:layout_
android:paddingLeft="3dp"
android:paddingStart="3dp"
android:paddingRight="3dp"
android:paddingEnd="3dp"
android:src="@drawable/button_main_user" />
<TextView
android:id="@+id/tvMainMenuUser"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:paddingTop="5dp"
android:text="@string/mainmenu_button_User"
android:textColor="#a8a8a8"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
我的应用在尝试设置布局时立即崩溃,但出现以下异常
android.widget.TableRow$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams
可能出了什么问题?
【问题讨论】:
页脚在预览中是完全白色的。我的应用程序随之崩溃。尝试在没有页脚的情况下运行您的应用程序。然后一切都应该正常运行。您现在知道在哪里进行故障排除。我不能没有全部内容。所以希望你的问题得到解决:) 干杯 【参考方案1】:我用我从你那里得到的东西检查了你的布局。我没有footer
(未测试)和Button
实现。我用默认的一次替换了你的Buttons
。我改变了什么;对于这么多的Views
,您不应该使用ScrollView
,它应该作为rootView
在顶部。我用NestedScrollView
替换了您的ScrollView
,并用根RelativeLayout
交换了位置(也更改了参数):
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:scrollbars="none">
<RelativeLayout
android:id="@+id/llCommunityMain"
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="center"
android:paddingBottom="70dp">
<LinearLayout
android:id="@+id/llCommunity"
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<RelativeLayout
android:layout_
android:layout_>
<androidx.cardview.widget.CardView
android:id="@+id/cvFindCollege"
android:layout_
android:layout_
android:layout_margin="10dp"
android:layout_marginTop="20dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:theme="@style/Theme.MaterialComponents.Light"
app:cardBackgroundColor="#f5f5f5"
app:cardCornerRadius="5dp"
app:cardElevation="10dp">
<Button
android:id="@+id/btnSuggestImprovements"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@android:drawable/dialog_holo_light_frame"
android:text="Button 1"
android:textAlignment="center"
android:theme="@style/Theme.MaterialComponents.Light" />
</androidx.cardview.widget.CardView>
</RelativeLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_marginTop="20dp"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<Button
android:id="@+id/btnFindCollege"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@android:drawable/dialog_holo_light_frame"
android:text="Button 2"
android:textAlignment="center" />
</LinearLayout>
<LinearLayout
android:id="@+id/llCommunityKhan"
android:layout_
android:layout_
android:layout_marginTop="20dp"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<Button
android:id="@+id/btnKhan"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@android:drawable/dialog_holo_light_frame"
android:text="Button 3"
android:textAlignment="center" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
但是,如果我运行该应用程序,一切正常。我的猜测是NestedScrollView
充当rootView
解决了这个问题。如果没有,您只需要检查两件事。您的Button
实现或footer
。干杯:)
结果:
【讨论】:
感谢您的回复@DEX7RA。我已经添加了页脚,以防您继续帮助我。我仍然无法弄清楚发生了什么,尝试了您的xml无济于事,同样的例外:( 没有页脚它仍然崩溃?即使您删除了以上是关于Android:LinearLayout 内的 CardView 使应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
android: ScrollView 内的 RecyclerView
默认情况下,LinearLayout 内的 ImageView 在侧面有边距
.Net程序猿玩转Android开发---线性布局LinearLayout