本文译自androd官方技术文档《Designtime Layout Attributes》:http://tools.android.com/tips/layout-designtime-attributes。

本文地址:http://blog.csdn.net/maosidiaoxian/article/details/41541269。转载请注明出处。翻译如有错讹,敬请指正。

设计时布局属性

在 Android Studio 0.2.11 版本中,布局渲染(用于布局编辑器以及XML编辑器的布局预览窗口),支持 设计时布局属性.


这些属性用于布局在工具里渲染时期,但是对运行时没有任何影响。这一点很有用,比如如果你想在编辑布局的时候把 示例数据数据放到文本框中,但又不想这些属性影响到你的应用的运行。

若要使用设计时属性,请首先确保您有在您的布局中定义工具命名空间:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        ...

这个工具命名空间是Android的工具专门公认的命名空间,所以你定义在视图元素上的所有的tool-namespace的属性,在应用程序被打包时都将自动剥离并且不会对运行时带来开销。

然后,例如设置文本字段的文本,使用与Android 框架中相同的属性,但使用 tools: 命名空间而不是 android: 命名空间:

        <TextView 
            android:text="Name:"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <EditText 
            tools:text="John Doe"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
在上面例子中,Name 标签使用正常的文本属性,它将在运行时显示。不过,文本字段使用设计时属性,因此它在工具中出现,而不是在运行时。 

一般情况下,你可以设置任何的Android 框架的属性作为设计时属性;只是使用tools:命名空间而不是android:命名空间。还要注意的是,你不必只选择其中的一个;您可以设置两个属性,Android
命名空间属性(在运行时使用)和工具属性(在设计时将覆盖运行时属性)。

您还可以使用设计时属性在工具里删除一个属性的值。例如,有这样一个bug(http://b.android.com/58448),你不能在布局编辑器里对ListView使用fastScrollAlwaysVisible属性。但是,您可能仍然希望该属性在运行时是设置的。通过设计时属性,你可以这样解决:
    <ListView
        android:id="@+id/listView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fastScrollAlwaysVisible="true"
        tools:fastScrollAlwaysVisible=""/>

下面是另一个例子;我们有一个有多个子view的FrameLayout,并且在设计时,我们只希望看到他们中的一个,比如说第二个:我们可以使用 tools:visibility 属性:


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="First"
        tools:visibility="invisible" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second"
        tools:visibility="visible" />

(根据你的需要,你可能会使用 visibility="gone" 来代替 visibility="invisible" 。)

限制

  • 目前仅支持覆盖现有的属性。我们可能要定义一些额外的方便的属性,使比如选择在ViewFlipper 显示的子view等等变得简单
  • 此时你必须手动编辑您的设计时属性
    • 它们不会作为一个选项出现,比如在布局编辑器属性表中。
    • 编辑器的代码完成功能不会帮助你进入这些属性;使用它们的最简单的方法是先在Android命名空间中进入,然后进行更换前缀来完成。
  • 需要注意的是设计时属性仅支持布局文件本身。你不能在其他地方使用它们——比如在菜单 XML 文件中,字符串资源定义中,等等。
  • 在这一点上,设计时属性只能用于框架资源中,而无法在自定义属性使用。
  • 查看 https://code.google.com/p/android/issues/detail?id=46186 以获取背景资料、额外请求或注释等信息。
关于 tools: 命名空间的其他属性的详细信息,请参阅 Tools Attributes。

android官方技术文档翻译——设计时布局属性的更多相关文章

  1. android官方技术文档翻译——工具属性

    本文译自androd官方技术文档<Tools Attributes>:http://tools.android.com/tech-docs/tools-attributes 本文地址:ht ...

  2. Android官方技术文档翻译——Gradle 插件用户指南(6)

    没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...

  3. Android官方技术文档翻译——Gradle 插件用户指南(5)

    昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...

  4. Android官方技术文档翻译——Gradle 插件用户指南(4)

    最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...

  5. Android官方技术文档翻译——Gradle 插件用户指南(7)

    本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...

  6. Android官方技术文档翻译——Gradle 插件用户指南(1-3)

    不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...

  7. Android官方技术文档翻译——清单合并

    本文译自Android官方技术文档<Manifest Merger>,原文地址:http://tools.android.com/tech-docs/new-build-system/us ...

  8. Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本

    本文译自Android官方技术文档<Migrating Gradle Projects to version 1.0.0>,原文地址:http://tools.android.com/te ...

  9. Android官方技术文档翻译——新构建系统概述

    本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...

随机推荐

  1. Docker 第一篇 认识Docker 的作用好处

    Docker 第一篇 认识Docker 的作用好处 (1)什么是Docker (2)Docker 优势劣势 Docker是去年开始关注并学习的,因为项目用到了AspnetCore 了解了之后总感觉会用 ...

  2. /bin/bash 常用命令

    ls -a 查看一切文件 ls -l 查看目录文件信息 clear 清屏(信息保留屏幕) reset 清屏(所有信息) ls *.txt 查看所有txt文件 wc 统计文件 -l 行数: - c 统计 ...

  3. Java中的Lock锁

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景.高效的性能,java还提供了Lock接口及其实现类ReentrantLock和 ...

  4. [多线程] 生产者消费者模型的BOOST实现

    说明 如果 使用过程中有BUG 一定要告诉我:在下面留言或者给我邮件(sawpara at 126 dot com) 使用boost::thread库来实现生产者消费者模型中的缓冲区! 仓库内最多可以 ...

  5. 初始化openresty开发环境

    参考链接 https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 初始化git ...

  6. 安卓 新版本 获取wifi状态网络是否可用等

    写下这篇文章目的:当我学习的和百度看看如何获取网络状态 发现都是一些比较老的方法 API23已结过时 所以在此写下记录 ,我不明白国内为什么那么少 那么我们来看看旧方法 package com.che ...

  7. Docker学习笔记2: Docker 概述

    一.什么是Docker Docker是基于Go语言实现的云开源项目. Docker 的主要目标是:"Bulid,Ship and  Run Any App ,AnyWhere" , ...

  8. linux 防火墙操作

    root/12345 (只能用ROOT操作)iptables -I INPUT -s x.x.x.x -p tcp --dport 8091 -j ACCEPT   #允许x.x.x.x访问本机的80 ...

  9. Android开发指南--0 总览

    无意间发现一个网站,主打IOS方面的教程,然而作为一个Android开发者,我就找了下网站里有没有Android的教程,还真有,这里就翻译一下. 翻译目标教程:https://www.raywende ...

  10. Scikit-learn:模型评估Model evaluation

    http://blog.csdn.net/pipisorry/article/details/52250760 模型评估Model evaluation: quantifying the qualit ...