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

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

error:Error:Noresourcefoundthatmatchesthegivenname(at'layout_above'withvalue

'@id/layout').

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

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

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

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

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

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

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

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

更多相关文章

  1. Android RecyclerView 的瀑布流式布局
  2. android网格布局
  3. android 流式布局 和 RadioGroup自动换行
  4. android布局时,左侧宽度固定而右侧textview高度变化,怎么9png实现
  5. Android 布局文件属性讲解
  6. ANDROID L——Material Design详解(主题和布局)
  7. android中shape布局详解

随机推荐

  1. Android(安卓)NDK 环境配置
  2. android 避免Android开发中的ANR
  3. android 动态壁纸 2
  4. Android Fragment和ViewPage 实现简易可
  5. Android强制让某个控件获得焦点
  6. Android(安卓)Vold实现总览
  7. android AlertDialog 弹窗自定义布局 点
  8. android8.0 崩溃 Only fullscreen opaque
  9. Android开发之旅: Intents和Intent Filte
  10. Android登陆页面软键盘弹起避免遮挡按钮