Android Studio:无法在GridLayout上添加视图。 android / view / View $ OnUnhandledKeyEventListener

时间:2018-07-17 11:07:56

标签: android android-studio imageview grid-layout

我已经为此苦苦挣扎了好几个小时。为什么会这样?我正在从网站上学习课程(不确定是否可以提及),并且所有内容都可以正常运行,除非它不适合我。 本质上,我想做的是做一个“四连环”游戏,我想使用一个GridLayout并在其中添加ImageViews。当我尝试将ImageViews添加到gridLayout时,它们没有显示。它们“存在”,但没有真正显示出来。 到目前为止我尝试过的:

  • 更改布局的高度和宽度
  • 玩转背景,能见度
  • 解决这个问题。
  • 为网格布局添加垂直方向
  • 再次从头开始创建所有内容
  • “无效的缓存/重新启动...”

    Stack Trace
    
    java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
    at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:180)
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:61)
    at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)
    at android.support.v7.widget.GridLayout.isLayoutRtlCompat(GridLayout.java:679)
    at android.support.v7.widget.GridLayout.onLayout_Original(GridLayout.java:1082)
    at android.support.v7.widget.GridLayout.onLayout(GridLayout.java)
    at android.view.View.layout_Original(View.java:19659)
    at android.view.View_Delegate.layout(View_Delegate.java:91)
    at android.view.View.layout(View.java:19645)
    at android.view.ViewGroup.layout(ViewGroup.java:6075)
    at android.support.constraint.ConstraintLayout.onLayout_Original(ConstraintLayout.java:1858)
    at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java)
    at android.view.View.layout_Original(View.java:19659)
    at android.view.View_Delegate.layout(View_Delegate.java:91)
    at android.view.View.layout(View.java:19645)
    at android.view.ViewGroup.layout(ViewGroup.java:6075)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout_Original(View.java:19659)
    at android.view.View_Delegate.layout(View_Delegate.java:91)
    at android.view.View.layout(View.java:19645)
    at android.view.ViewGroup.layout(ViewGroup.java:6075)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)
    at android.view.View.layout_Original(View.java:19659)
    at android.view.View_Delegate.layout(View_Delegate.java:91)
    at android.view.View.layout(View.java:19645)
    at android.view.ViewGroup.layout(ViewGroup.java:6075)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:346)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:678)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    

    <android.support.v7.widget.GridLayout
        android:layout_width="368dp"
        android:layout_height="359dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/board2"
        android:visibility="visible"
        app:columnCount="3"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.6"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0"
        app:rowCount="3">
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/red"
            android:visibility="visible"
            app:srcCompat="@drawable/red" />
    </android.support.v7.widget.GridLayout>
    

2 个答案:

答案 0 :(得分:1)

我是Android新手,我也遇到同样的错误, 但是我发现网格布局的一种简单方法是尝试使用基本的<GridLayout>标签而不是<android.support.v7.widget.GridLayout> 便宜的方式...

答案 1 :(得分:0)

我设法通过进入文本视图并调整了一些xml代码来解决此问题。

    <GridLayout
    android:layout_width="match_parent"
    android:columnCount="3"
    android:rowCount="3"
    android:background="@drawable/board"
    android:layout_height="400dp"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/gridLayout">
    
    </GridLayout>

    <ImageView
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:id="@+id/imageView"
    android:layout_alignBottom="@+id/gridLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_margin="15dp"
    android:layout_marginTop="25dp"
    android:onClick="dropIn"
    android:tag="0"/>

基本上,我只是将ImageView代码移到了网格布局代码中,而不是在之后。希望这有道理!

    <GridLayout
    android:layout_width="match_parent"
    android:columnCount="3"
    android:rowCount="3"
    android:background="@drawable/board"
    android:layout_height="400dp"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:id="@+id/gridLayout">

    <ImageView
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:id="@+id/imageView"
    android:layout_alignBottom="@+id/gridLayout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_margin="15dp"
    android:layout_marginTop="25dp"
    android:onClick="dropIn"
    android:tag="0"/>

    
    </GridLayout>