2013-9-21

问题一、不同的XML文件中相同类型的控件id相同,那么将这些不同的布局xml组合在一个大的布局中,如何解决相同id问题 ?

解决办法: 不同的布局文件XML要组合成一个新的大布局,必须使用include加载各个不同的xml,那么在这不同的XML文件组合到一起时,难免会有些空间的id有冲突,如果在主页面仍然利用this.findViewById(R.id.xxx)时找相应的控件时,编译器只会识别第一个,而后面的可能不会识别,所以,在利用include加载各个xml时,此时incldue在某种意义上讲已经是一个view了,那么给该include都命名一个不同的id,然后通过该id找该View的任何控件。

例如:

<include
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="60dp"
layout="@layout/title" />
 
<include
android:id="@+id/center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
layout="@layout/center" />
 
 
<include
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.0000000000001"
layout="@layout/bottom" />
该xml文件由三部分组成,分别是title.xml、center.xml、bottom.xml 通过include的方式加载到一起形成一个大的总体主布局,那么在这些分布局都给定了相应的唯一id,
android:id="@+id/title",android:id="@+id/center",android:id="@+id/bottom"。此时的一个include就是一个view,那么在title.xml中有一个button,很有 可能在系统生成时和center.xml里面的button的id相同。那么如何区分这两个button?通过父亲找孩子,也就是一层一层的往下找。
titleView=findViewById(R.id.title),这样就找到了title.xml的view,然后 titleButton=(Button)titleView.findViewById(R.id.ButtonID)
 
 
 
 

问题二、如何将一个组件或者布局控件隐藏起来不显示,等到需要显示的时候显示?

解决办法:要隐藏一个组件或者布局、控件。在xml文件利用andriod:visibility:"gone"属性即可,显示gone改为visible
         在java文件当中使用setVisibility()方法。例如要隐藏一个View 直接XXXXView.setVisibility(view.gone)即可
 
 
 
 
问题三、安卓中include是加载起来的文件,比如在一个布局文件加载其他的布局文件从而组合成一个大的布局文件,那么其真正加载的文件之后具体的含义是什么?
    include在某种意义上讲就是一个VIew
 
 

问题四、findViewById()方法的使用

利用findByViewById(),就是利用id寻找相应的VIew的

问题五、如何将一个xml文件(例如布局xml文件)变成一个View?

解决办法:LayoutInflater layoutInflater = LayoutInflater.from(this);

        View temp = layoutInflater.inflate(R.layout.xxx, null);
        其中XXX为要变化的xml文件名。
 
 
 

问题六、不同的activity之间有相同的布局方式(一般出现在次业务中),比如都是上中下布局方案,只是各个部分里面的内容以及显现的View不同,如何有效实现?

解决办法:一个概念,这种情况一般是有一个主业务,然后主业务中有次业务,那么功能的切换按钮在主界面上,按不同的按钮,切换不同的视图,但是这些不同的视图的布局结构相同。但切记的是,各个次业务界面必须给出明确的退出按钮,该按钮调用finish()方法即可。

首先建立一个基类布局文件,加载一个共同的布局方案,比如上下结构布局基类,base.xml加载了两个xml布局,其中上为标题相同的部分title.xml,下部为不同的部分,可以是不同xml来替换,根据选择的按钮来替换,比如1.xml和2.xml。

第二、建立一个baseActivity.java继承activity,在该java文件中实例化各个控件,View以及事件(退出以及其他自己的事件)即控件中必须包含一个退出该界面的按钮。并且在在onCreate()方法内部设置init()方法。1.xml和2.xml对应的activity java文件1.java和2.java继承baseactivity,然后重写init()方法,这样也就可以设置各自不同的内容了。

第三、这里需要注意的是,用1.java为例:在该方法init()中需要将其对应的xml文件(1.xml)转换成一个View,同时将base.xml里面加载的下部的xml布局文件移除,然后添加自己进去,也就是1.xml。具体方法为:

LayoutInflater layoutInflater = LayoutInflater.from(this);
View temp = layoutInflater.inflate(R.layout.1, null);
baseLinear.removeView(infoView);

baseLinear.addView(temp, 1);

其中,baseLinear为

base.xml主文件的view,infoView为base.xml加载的下部文件的View。

最后,功能的切换,也就是显示不同视图的事件在主界面上给出即可。

问题七、同一个activity中有多项功能,各个功能布局结构相同(一般出现在主业务中),但是按不同的功能控件(比如按钮)切换不同的功能View,如何有效实现?

解决办法:利用信息隐藏,先将所有的布局加载到一个主布局当中去,也就是各个功能的View利用include加载到主布局当中去,然后默认一个启动主页面的显示View,其他的都利用andriod:visibility:"gone"将其隐藏,然后点击相应功能按钮时,将其显示利用XXXX.setVisibility(参数)方法。

例如,一个主布局有三部分组成,分别是上中下三部分,将这三部分的布局文件利用include加载到主布局当中,底部是是功能按钮,顶部是功能标题信息,中间是不同的功能,那么此时完全可以使用一个activity来实现这些功能的切换。即利用按钮选择事件,点击相应功能按钮,那么就将其View显示出来,其他的都隐藏,当然顶部的标题信息也可以做相应的修改。

问题八、在编译的过程中出现 error opening trace file:No such file or directory(2)?

解决办法:首先:

检查代码有没有写错,尤其是涉及到findViewById的时候,要小心,找想要的View必须通过其父亲找,一层一层找下去。通过该方法找View如果id找不到,可能会出现此种情况。

第二:这个错误还可能是你的android API 和当前虚拟器版本不一样导致的。

		<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" />
		<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
 
问题九:两者之间的区别
        getReadableDatabase();
        getWritableDatabase();

XML布局文件于Java代码使用问题的更多相关文章

  1. 使用XML布局文件和Java代码混合控制UI界面

    完全使用Java代码来控制UI界面不仅烦琐.而且不利于解耦:而完全利用XML布局文件来控制UI界面虽然方便.便捷,但难免有失灵活.因此有些时候,可能需要混合使用XML布局文件和代码来控制UI界面. 当 ...

  2. 使用XML文件和Java代码控制UI界面

    Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制 ...

  3. Android color(颜色) 在XML文件和java代码中

    Android color(颜色) 在XML文件和java代码中,有需要的朋友可以参考下. 1.使用Color类的常量,如: int color = Color.BLUE;//创建一个蓝色 是使用An ...

  4. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  5. Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout

    一.布局文件part.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  6. Android studio3.1的XML布局文件没有自动提示不全代码功能

    将studio从2.3升级到3.1,打开后发现布局文件没有代码提示 尝试了网上一些解决方法,但发现并不是平时所说的省电模式开关的问题,也尝试了删除idea和iml文件后rebuild的方法,无效 然后 ...

  7. Android学习笔记(9):使用XML文件和Java代码控制UI界面

    Android推荐使用XML文件设置UI界面.然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller.是模型(model)-视图(view)-控制 ...

  8. Android中将xml布局文件转化为View树的过程分析(下)-- LayoutInflater源码分析

    在Android开发中为了inflate一个布局文件,大体有2种方式,如下所示: // 1. get a instance of LayoutInflater, then do whatever yo ...

  9. Android中将xml布局文件转化为View树的过程分析(上)

    有好几周没写东西了,一方面是因为前几个周末都有些事情,另外也是因为没能找到好的写作方向,或者说有些话题 值得分享.写作,可是自己积累还不够,没办法只好闷头继续研究了.这段时间一边在写代码,一边也在想A ...

随机推荐

  1. iOS开发-动画总结

    一.简介 IOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide.Core Animation是IOS和OS X平台上负责图形渲染与动画的基 ...

  2. Spring Security 与 OAuth2(介绍)

    https://www.jianshu.com/p/68f22f9a00ee Spring Security 与 OAuth2(介绍) 林塬 2018.01.23 11:14* 字数 3097 阅读 ...

  3. Ubuntu 18.04安装显卡驱动

    安装完双系统,我遇到好几次开机或关机有问题,导致我重装了3次系统,第三次我才知道是显卡驱动问题,Ubuntu预装的开源Nvidia驱动太烂了,需要换官方驱动. 把 nouveau 驱动加入黑名单 $s ...

  4. 03大端和小端(Big endian and Little endian)

    1.大端和小端的问题 ​ 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节),而 Little endian 则相反 ...

  5. Leetcode5078. 负二进制数相加

    问题: 5078. 负二进制数相加 给出基数为 -2 的两个数 arr1 和 arr2,返回两数相加的结果. 数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列. ...

  6. 深入理解FIFO(包含有FIFO深度的解释)——转载

    深入理解FIFO(包含有FIFO深度的解释) FIFO: 一.先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行 ...

  7. python基础学习笔记——反射

    对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...

  8. 00018_流程控制语句switch

    1.选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码. 2.switch语句的语法格式 swit ...

  9. 利用委托实现自己的数据缓存仓库(附上Demo)

    Demo源码 写在前面的话 写完这篇博客后,总觉得少了些什么,后来想了下,感觉自己只是把结果给亮了出来,自己为什么想到这么做,这个类库出生的缘由未详述,因此,在本段作下说明,如有不足之处,希望能和大家 ...

  10. pycharm安装包

    pycharm的纯净版本 链接: https://pan.baidu.com/s/15fLsO_GCO8uaYNQjLVdNaw 密码: ef22