Eclipse的UI设计器无法预览自定义视图

3

背景

我一直在创建各种类型的自定义视图,通常情况下,它们的预览在 ADT 的 UI 设计师上都可以正常显示。

最近,升级到 ADT 的最新版本(22.0.5.v201307292155--757759)后,我无法看到任何类型的自定义视图,甚至是最简单的视图也不行。

问题

现在,我确定自定义视图可以正常预览,因为如果我创建一个新的工作区并创建它们,我可以正常看到它们。

问题在于当前工作区有许多项目的设置,我一直收到以下错误:

找不到以下类: - ...(更改为...,修复构建路径,编辑 XML,创建类)

其中“...”是自定义视图的类。

我还为每个自定义视图使用了灰色矩形,并且 Lint 也会发出警告:

布局文件中引用的类...在项目或库中未找到

这非常奇怪,因为我在 XML 中使用了正确的自定义视图语法(而且我已经经常这样做)。即使拖放也没有帮助。

这也很奇怪,因为 Eclipse 可以找到这些类(在 XML 标记上使用 CTRL+单击就可以直接转到正确的类),它只是在查看时似乎无法找到它们。

我还尝试卸载 ADT 并重新安装它,但没有帮助。我还尝试从 SDK 管理器中卸载和重新安装一些相关组件。什么都没用。

以下是一个自定义视图的示例代码,它无法正常显示:

public class CustomTextView extends TextView {

    public CustomTextView(Context context) {
        super(context);
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}

如您所见,这段代码并没有什么特别之处。

问题

为什么会出现这种情况?我该如何解决它?我是否可以复制当前工作区的所有设置(我的意思是全部),来创建一个新的工作区以解决它?

其他人是否也遇到了这个问题?这是ADT的一个bug吗?

注意:我不想重置工作区,因为其中有太多项目的特殊设置。


你是指xml文件中图形布局部分的预览吗? - Spring Breaker
@user2012 是的。有时候你会使用 isInEditMode,以防你的自定义视图无法显示,所以你会放一些假东西。 - android developer
@androiddeveloper:我没有这种问题。你能否发布一个“简单”的自定义视图示例,以便在布局编辑器中像那样运行? - Tal Kanel
@TalKanel,就像我所写的那样,即使是最简单的自定义视图也无法显示,但这只发生在这个工作区。如果我使用一个全新的工作区,一切都可以正常工作。例如,我现在发布了一个示例类,但是你能想到的任何类都不起作用。 - android developer
2个回答

0
你是否已将其他工作区库包含到新项目中?例如:项目->属性->Android->库“添加”旧的工作区项目。

0

你同时也更新了Eclipse插件和ADT吗?

我知道这种情况发生在我身上,很可能是我错过的。

如果实际平台SDK有更新,也可以尝试更新它们。您还可以尝试将预览使用的SDK版本更改为最新或之前的版本(这是预览中左上角的Android图标,应该显示18)。

我知道如果在文本上使用阴影等内容,则某些自定义视图不会呈现。然后您可以在自定义视图内设置isInEditMode标志以跳过这些。

最后,下载带有ADT捆绑包的新zip文件,然后再次尝试:)

希望这样能有所帮助。


很遗憾,我已经尝试过那些方法了。这与阴影无关,因为我甚至在我编写的示例代码上进行了测试(而且对于其他包含阴影的自定义视图,我使用了你提到的功能,在此之前它们都能正常工作)。为了这个问题,我希望我可以恢复到 ADT&SDK 17 版本。我有很多自定义视图,很难想象一切会是什么样子... - android developer
你可以像我上面提到的那样回退到sdk 17,也可以从zip文件安装早期的ADT。 - DArkO
难道不需要花费很多时间等待它下载所需的所有内容吗?我已经知道ADT&SDK 18在我的家用电脑上运行良好,所以这可能是一种巨大的浪费时间。 - android developer
就像400兆字节那么大。如果你的连接是拨号上网,那需要很长时间 :) - DArkO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接