Android Studio 3.1.4:缺少类和不正确的蓝图显示

问题描述 投票:1回答:2

我在Ubuntu 18.04.1上使用Android Studio 3.1.4。我想快速创建主(默认)活动的UI,因此我打开了布局编辑器。发生了一些错误。然后我尝试添加一个按钮:它似乎没有显示在蓝图中(并且ConstraintLayout也被奇怪地显示)。

Similar StackOverflow questions - Android support library

StackOverflow中也提出了类似的问题。答案是使用不同版本的Android支持库。目前,我正在使用这个版本:

implementation 'com.android.support:appcompat-v7:28.0.0-rc01'(档案:build.gradle(Module: app))。

实际上,即使Android Studio建议我使用28.0.0-rc02,我也不会在此列表中看到它:https://mvnrepository.com/artifact/com.android.support/design?repo=google

顺便说一句,我也遇到了28.0.0-rc02提到的所有错误。在简历中,我遇到了所有这些错误与28.0.0-rc01(目前使用)和28.0.0-rc02。我暂时没有尝试其他版本。

使用implementation 'com.android.support:appcompat-v7:27.1.1

随着implementation 'com.android.support:appcompat-v7:27.1.1',所有的问题都解决了。然而:

  1. 这不是最后一个版本(https://mvnrepository.com/artifact/com.android.support/design?repo=google表示最后一个版本是:28.0.0-rc01,Android Studio表明它是28.0.0-rc02 - 两个bug)
  2. Android studio强调红色我的implementation指令如下:

enter image description here

Errors opening the Layout Editor

  1. 渲染问题

无法加载具有未知错误的AppCompat ActionBar。

  1. 无法实例化以下类

- android.support.v7.widget.ActionBarContainer(Open Class,Show Exception,Clear Cache) - android.support.v7.widget.ActionBarContextView(Open Class,Show Exception,Clear Cache) - android.support.v7.app.WindowDecorActionBar (Open Class,Show Exception,Clear Cache)

例外细节:

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)atg.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at java.lang.ClassLoader.loadClass(ClassLoader.java: 357)org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)at android.support.v7.widget.ActionBarContainer。(ActionBarContainer.java:62)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) )在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atg的java.lang.reflect.Constructor.newInstance(Constructor.java:423) .jetbrains.android.uipre org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:222)中的org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:264)中的view.ViewLoader.createNewInstance(ViewLoader.java:481)在com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:209)的android.view.BridgeInflater.loadCustomView(BridgeInflater.java:337)在android.view.BridgeInflater.loadCustomView(BridgeInflater.java:348) )android.view.BillInflater.createViewFromTag(BridgeInflater.java:248)android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863)android.view .LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)位于android.view.LayoutInflater.inflate(LayoutInflater.java:837)的android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)android.view.LayoutInflater.inflate( LayoutInflater.java:515)在android.view.LayoutInflater.inflate(布局Inflater.java:423)com.android中的com.android.layoutlib.bridge.bars.BridgeActionBar。(BridgeActionBar.java:89)com.android.layoutlib.bridge.bars.AppCompatActionBar。(AppCompatActionBar.java:68) .layoutlib.bridge.impl.Layout.createActionBar(Layout.java:277)位于com.android.layoutlib.bridge.impl.RenderSessionImpl的com.android.layoutlib.bridge.impl.Layout。(Layout.java:161)。在com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)的com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)的com中充气(RenderSessionImpl.java:288) .android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)位于java.util.concurrent的com.android.tools.idea.rendering.RenderTask.lambda $ inflate $ 3(RenderTask.java:678)。 FutureTask.run(FutureTask.java:266),位于java.util.conc中的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) .Thread.run(线程的.java:745)

Blueprint problems - What is in my UI?

目前,除了根组件(一个ConstraintLayout实例)之外,你可以看到(请注意,ConstraintLayout似乎在蓝图中表示为一个非常小的方块 - 这是一个蓝图问题,不是吗?):

enter image description here

如果我在蓝图中拖放一个带有“TEST TEST TEST”文本的按钮,我会得到这个(请注意,按钮......并没有真正出现,只是在广场内显示了一个奇怪的东西):

enter image description here

我在这个广场上点了好几次,里面有一个奇怪的东西。我得到了这个新例外:

ConstraintLayout中缺少约束

此视图不是垂直约束的:在运行时它将跳转到顶部,除非您添加垂直约束布局编辑器允许您将小部件放在画布上的任何位置,并使用设计时属性(例如layout_editor_absoluteX)记录当前位置。这些属性不会在运行时应用,因此如果在设备上推送布局,则窗口小部件可能显示在与编辑器中显示的位置不同的位置。要解决此问题,请通过从边连接拖动来确保窗口小部件具有水平和垂直约束。

My question

在所有这些错误和例外中间,我有点迷失。我应该做些什么?我正在阅读文档(https://developer.android.com/training/basics/firstapp/building-ui),但他们似乎没有这种奇怪的行为(我在谈论在蓝图中显示我的按钮的问题以及我在这个问题中复制/粘贴的例外)。

重要的编辑

我应该使用哪个版本的Android支持库?特别是:我应该怎么做才能使用最新版本? (无论是rc-1,还是rc-2 - Android Studio推荐rc-2,但这个没有出现在https://mvnrepository.com/artifact/com.android.support/design?repo=google

java android android-studio ubuntu
2个回答
1
投票

最新版本的支持库仍在开发中,可能包含错误

在它结束之前,您可以将版本降级到28.0.0-alpha1

implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'

0
投票

我的蓝图遇到了同样的问题,我的解决方案是同时选择预览和蓝图。

还尝试使用xml文本添加按钮并添加一些约束:

app:layout_constraintEnd_toEndOf="parent"

应该做。

© www.soinside.com 2019 - 2024. All rights reserved.