前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android置底一个View后运行报错

Android置底一个View后运行报错

作者头像
欢醉
发布2018-01-22 16:22:48
4440
发布2018-01-22 16:22:48
举报
文章被收录于专栏:james大数据架构james大数据架构

大致问题是 放一个LinearLayout ID @+id/layout ,然后在它上面放一个button 设置android:layout_above="@id/layout" 

理论上就表示LinearLayout是位于Buttons的下方,原本以为这样就大功告成了,没想到却得到一个莫名其妙的编译错误:

error: Error: No resource found that matches the given name (at 'layout_above' with value 

 '@id/layout').

说是在android:layout_above这条属性语句中,找不到@id/所指的资源

我们一般习惯按照布局的排版顺序依次列写我们的xml代码,但是像上述这样的xml并没有按照布局的顺序编写,而是为了解决找不到ID这个问题,把本应该写在前面的LinearLayout前置了。总觉得很别扭,有没有什么方法既能解决找不到ID的问题,又能按照实际布局的顺序编写XML布局代码呢?答案是肯定的。

就如同C++里解决两个相互嵌套类的方案——前置声明一样,布局文件中也有所谓的“前置声明”。

既然问题在于该ID的使用出现在声明之前,那么我们就试图把ID的声明提前。

这里用到了另一个xml配置文件,bill暂且将其命名为myids,在myids.xml中编写如下内容:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3. <!-- 手动声明资源ID,类似于C++中的前置声明 --> 
  4. <item type="id" name="layout"></item> 
  5. </resources> 

这样便手动向系统添加了一个ID layout 系统会根据这条xml代码在R类中生成对应的int型资源。

还一种是先声明,把button放在layout后面。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-06-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档