【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

目录(?)[-]

  1. xml控件代码重用include
  2. xml控件代码重用merge
  3. 横屏和竖屏landsacpe portrait

xml控件代码重用:include

如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式。例如定义my_button.xml如下

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:textColor="#FF0000" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" />

在布局中,我们将重复使用到这段代码,如下处理:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout … …" > 
    <include android:id="@+id/include_one" 
        layout="@layout/my_button" />  <!-- 我们可以增加某些属性,例如android:id -->
    <include  android:id="@+id/include_two"    
        layout="@layout/my_button" 
        android:text="Happy"  />  <!-- 测试,不是所有的属性增加都是有效,例如android:text,需要通过id获取在代码中重置 -->
</LinearLayout>

我们不仅可以引用重复代码,还可以对属性进行增加和修改。但是增加和修改受到某些限制,有时并不起效果,这点必须要注意。

如果代码中含有多个控件,根据XML的格式,我们不可以平行地摆放多个控件,很简单,将它们放置在layout中就可以,例如:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout …… > 
    <View1 …… /> 
    <View2 …… /> 
       ……. 
</LinearLayout>

xml控件代码重用:merge

如果我们有多个控件,将他们放置在某种布局的的layout中。那么回出现layout的嵌套。这种嵌套有时是没有必要的,例如将一个LinearLayout放置在LinearLayout,这会降低代码的效率。有时我们并不希望在重用代码中就设定布局格式,这时这种方式就不合适。对于这多种控件,重复代码的xml文件,可以使用merge,如下:

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android"> 
    <View1 …… />  
    <View2 …… /> 
     …… 
</merge>

在进行代码合并时,系统会去掉merge。

横屏和竖屏:landsacpe & portrait

为了实现美观,横屏和竖屏可能会采用不同的排版方式,可在layout-land/,layout-port/中进行设置,而layout/则是缺省的。即使我们设置了layout-land/和layout-port/,我们仍应设置缺省的layout/,因为还有一种很少使用的layout-square,即使我们同时也设置了这种少有的方形,仍应当将缺省的进行设置。因为我们不清楚具体运行应用的android版本,有没有新的类型出现,设置缺省布局是最保险的方式,此外也可以避免某种情况,无法匹配资源变更,必须采用缺省。具体见Pro Android学习笔记(四):了解Android资源(下)的最后部分“资源和配置的变更”。

有些情况,我们需要强制横屏或者竖屏,而不是根据重力感应器或者陀螺仪这里传感器来监测手机的实际摆放情况。例如图片播放或者视频播放。即时我们在XML中设置为android:orientation="vertical",仍可以在代码中强制设置方向:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    ... ... 

下面是例子,左图是普通情况,右图在代码中强制设置方向为横屏。

相关链接: 我的Android开发相关文章

转载于:https://www.cnblogs.com/blongfree/p/5047952.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

管理者一定会遇到的那些事

——极客时间——沈剑老师分享有感

Git使用攻略

Git使用攻略 merge&#xff0c;将develop合并到master# 切换到Master分支git checkout master# 将Develop分支合并到master git merge --no-ff develop 切换分支git checkout master 检出代码git checkout master 创建分支git branch newBranch查看本地分支git branch查看远程分…

Java停止线程的方式

1、使用中断标志位 public class StopThreadTest extends Thread {private boolean exit false;Overridepublic void run() {while (!exit) {try {System.out.println("i am running,please wait a moment");Thread.sleep(500);} catch (InterruptedException e) {…

Vim文本编辑器 指令簿(二)

常常处理文本以及常常须要写代码的人&#xff0c;都会有自己比較常常使用的编辑器&#xff0c;本人喜欢用Vim。理由就是Vim编辑器灵活&#xff0c;而且能够达到纯键盘操作&#xff0c;使用纯熟情况下&#xff0c;根本不须要鼠标操作。听起来是不是非常酷的&#xff1f;只是别高…

读《数学之美》

数学之美 数学的发展实际上是不断的抽象和概括的过程 目录 数学之美 第一章 第二章&#xff08;从规则到统计&#xff09; 第三章 统计语言模型 第四章 分词 第五章 隐马尔科夫模型 第六章 信息的度量和作用 第七章 贾里尼克和和现代语言处理 第八章 简单之美——布…

每天一个JavaScript实例-动态省份选择城市

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /> <title>每天一个JavaScript实例-动态省份选择城市</title> <script> var citystore new Array(); citys…

阅读源码那些事

方法 看spring的源码的时候如果我们一直追究所有的细节那会让我们会越陷越深&#xff0c;掉入细节的无底洞&#xff0c;稍不留神脑回路跟不上就会蒙圈。 因此&#xff0c;我们要学会找源码中的关键部分看&#xff0c;弄懂主要流程和本次看源码的目的的那部分就行。 等我们对…

Advanced C++ --- const function

上一篇介绍了const修饰的变量或者指针的含义&#xff0c;这篇我们介绍const修饰的函数以及函数参数含义。 首先我们看一个例子 class Dog{int age;string name; public:Dog(){age 3;name "dummy";}void setAge(const int &a){age a;a;} };int main(){Dog d;in…

slf4j、log4j日志报错排查

1、WARN Please initialize the log4j system properly 解法&#xff1a;只要在 src文件目录下建立配置文件log4j.properties即可 2、SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" 解法&#xff1a;这是因为sl4j和log4j的不兼容导致的&#…

无刷新三级联动查询

JQuery中国省市区无刷新三级联动查询&#xff08;转&#xff09;&#xff1a;http://www.cnblogs.com/xiaoyu5062/archive/2012/07/30/2615359.html Ajax实现无刷新三联动下拉框&#xff08;转&#xff09;&#xff1a;http://singlepine.cnblogs.com/articles/257954.html js特…

java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken

使用ieda构建web工程项目&#xff0c;启动tomcat报错&#xff1a; java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken maven经过不断的clean&#xff0c;compile、package都没有作用&#xff0c;最后发现是因为compile后生成了jar包 于是手动在pom…

iOS屏幕尺寸和分辨率了解

1、截至目前为止&#xff0c;主流的iOS设备屏幕有以下几种&#xff1a; --------------- iPhone ---------- -------- iPad ------------ 2、iOS设备屏幕分辨率&#xff1a;&#xff08;ppi是像素密度单位【像素/英寸】&#xff0c;401ppi表示每英寸上有401个像素&#xff0…

“睡服”面试官系列第十七篇之Reflect(建议收藏学习)

目录 1. 概述 2. 静态方法 2.1Reflect.get(target, name, receiver) 2.2Reflect.set(target, name, value, receiver) 2.3Reflect.has(obj, name) 2.4Reflect.deleteProperty(obj, name) 2.5Reflect.construct(target, args) 2.6Reflect.getPrototypeOf(obj) 2.7Reflec…