是时候让 Android Tools 属性拯救你了

本文介绍了如何在Android布局文件中使用tools属性进行文本预览、图片预览,以及listitem、sampledata和自定义数据的使用,展示了如何通过XML和Json为控件绑定数据。这些工具对于优化设计时间和处理预览中的数据非常有用。
摘要由CSDN通过智能技术生成

android:layout_height=“wrap_content”

android:textSize=“16sp”

android:textColor=“@color/title_text_color”

app:layout_constraintStart_toEndOf=“@+id/card_item_avatar”

android:layout_marginStart=“12dp”

app:layout_constraintTop_toBottomOf=“@+id/card_item_username”

android:layout_marginTop=“8dp”

android:maxLines=“1”

tools:text=“今天上海的夜色真美!”/>

<TextView

android:id=“@+id/card_item_content”

android:layout_width=“0dp”

android:layout_height=“wrap_content”

app:layout_constraintStart_toStartOf=“parent”

android:layout_marginTop=“24dp”

app:layout_constraintTop_toBottomOf=“@+id/card_item_avatar”

app:layout_constraintBottom_toBottomOf=“parent”

android:layout_marginBottom=“16dp”

app:layout_constraintVertical_bias=“1.0”

android:maxLines=“3”

android:ellipsize=“end”

android:textColor=“@color/content_text_color”

android:textStyle=“normal”

app:layout_constraintEnd_toEndOf=“@+id/card_item_bottom_border”

android:layout_marginEnd=“16dp”

android:layout_marginStart=“16dp”

app:layout_constraintHorizontal_bias=“0.0”

tools:text=“人生若只如初见,何事秋风悲画扇…”/>

<ImageView

android:id=“@+id/card_item_poster”

android:layout_width=“0dp”

android:layout_height=“200dp”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintTop_toBottomOf=“@+id/card_item_content”

app:layout_constraintEnd_toEndOf=“parent”

android:layout_marginEnd=“16dp”

android:scaleType=“centerCrop”

android:layout_marginTop=“8dp”

android:layout_marginStart=“16dp”

app:layout_constraintBottom_toBottomOf=“parent”

android:layout_marginBottom=“16dp”

app:layout_constraintVertical_bias=“0.0”

tools:ignore=“ContentDescription”

android:visibility=“visible”

tools:src=“@drawable/shanghai_night”/>

<View

android:id=“@+id/card_item_bottom_border”

android:layout_width=“0dp”

android:layout_height=“2dp”

app:layout_constraintTop_toBottomOf=“@+id/card_item_poster”

android:background=“#ffededfe”

app:layout_constraintEnd_toEndOf=“parent”

android:layout_marginTop=“16dp”

app:layout_constraintStart_toStartOf=“parent”/>

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:id=“@+id/card_item_date”

android:layout_marginTop=“16dp”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintEnd_toEndOf=“parent”

android:layout_marginEnd=“16dp”

android:textColor=“@color/date_text_color”

android:textSize=“12sp”

tools:text=“2019-08-10”/>

</android.support.constraint.ConstraintLayout>

通过上面代码我们可以发现:通过 对 TextView 使用 tools:text 属性代替 android:text 就可以实现文本具体效果的预览,然而这项设置并不会对我们 App 实际运行效果产生影响。同理,通过将 tools:src 作用于 ImageView 也可以达到预览图片的效果。此外。我们还可以对其他以 android: 为前缀的属性进行预览而不影响实际运行的效果,例如:上面布局代码中的底部分割线 <View>,我们想将其在 App 实际运行的时候隐藏掉,但我们还是需要知道它的预览效果和所占高度:

<View

android:id=“@+id/card_item_bottom_border”

android:layout_width=“0dp”

android:layout_height=“2dp”

android:visibility=“gone”

tools:visibility=“visible”

tools:layout_height=“8dp”

app:layout_constraintTop_toBottomOf=“@+id/card_item_poster”

android:background=“#ffededfe”

app:layout_constraintEnd_toEndOf=“parent”

android:layout_marginTop=“16dp”

app:layout_constraintStart_toStartOf=“parent”/>

如上所示,通过 tools:visibility 和 tools:layout_height 就可以仅在布局预览情况下改变 View 的状态和高度。虽然上述情况比较少用,但是希望大家也能够知道,tools: 可以替代所有 android: 修饰的属性。下面再列举一些其他会常用到的属性。

  • tools:layout

这个属性只能用于fragment 控件中,如果我们的 activity 布局文件中声明了 <fragment> 控件,我们就可以通过 tools:layout=”@layout/fragment_main” 来在当前 activity 布局中预览 fragment中的布局效果。

  • tools:showIn

这个属性就比较好玩了,它可以指定其他布局文件像 <include>组件一样在当前布局文件中使用和预览 <include> 控件的实际效果。例如,我们 card_item_layout.xml 作为 showIn 的对象给 show_in_layout.xml 布局使用,然后我就可以看到 show_in_layout.xml 中如下效果:

  • tools:menu

这个属性可以给当前布局预览器的 Toolbar 添加多个菜单项,但仅限于布局文件的根节点元素。如:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:tools=“http://schemas.android.com/tools”

android:orientation=“vertical”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

tools:menu=“menu1,menu2” />

  • tools:maxValue | tools:minValue

这两个属性仅用于 <NumberPicker>,可以在预览时指定其最大值和最小值:

<NumberPicker

xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:tools=“http://schemas.android.com/tools”

android:id=“@+id/numberPicker”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

tools:minValue=“0”

tools:maxValue=“10” />

  • tools:listitem | tools:listheader | tools:listfooter | tools:listCount

下面来讲一下列表相关组件的 tools 属性。上面四个属性仅用于 <AdapterView>及其子类(如:ListView 和 RecyclerView)。然而,它们内部仍有一些使用限制:tools:listCount 仅用于RecyclerViewtools:listheader 和 tools:listfooter 仅限于 ListView;至于 tools:listitem 属性二者皆可用。之前的效果图就是借助于此属性:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout

xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:tools=“http://schemas.android.com/tools”

xmlns:app=“http://schemas.android.com/apk/res-auto”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

tools:context=“.MainActivity”

android:background=“#ffEBEBEF”>

<android.support.v7.widget.Toolbar

android:id=“@+id/toolbar”

android:layout_width=“0dp”

android:layout_height=“wrap_content”

android:background=“?attr/colorPrimary”

android:theme=“?attr/actionBarTheme”

android:minHeight=“?attr/actionBarSize”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintEnd_toEndOf=“parent”

android:elevation=“1dp”

app:title=“@string/app_name”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintHorizontal_bias=“0.0”/>

<android.support.v7.widget.RecyclerView

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

app:layout_constraintStart_toStartOf=“parent”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintBottom_toBottomOf=“parent”

android:scrollbars=“vertical”

app:layout_constraintTop_toBottomOf=“@+id/toolbar”

app:layout_constraintHorizontal_bias=“0.0”

app:layout_constraintVertical_bias=“0.0”

tools:listitem=“@layout/card_item_layout”/>

</android.support.constraint.ConstraintLayout>

sample data


即 样本数据 功能,可以通过 @tools:sample 来使用该属性,也属于 design-time view attributes。但它并非只是一个属性那么简单,更应该算是一个“工具利器”,所以会将其单独拿出来详细介绍。这个工具是本年度 Google 大会上 Android 开发团队特别介绍的一个新推属性。它有什么用呢?用处大了!先前的布局预览使用的数据都是我们直接在布局控件中注明或者在 strings.xml 文件中给出的,这一就会产生一些脏数据,不利于我们后期的处理。而有了 sample data,我们就可以对布局预览器中的 “样本数据”进行集中保存和管理了。

1、sample data 的使用

Android studio 已为我们提供了以下样本数据,我可以直接拿来使用:

上述表格中不仅有常用文本数据和日期等数据,还提供了一些图片样本数据,那么该如何使用呢?很简单,只需要切换到布局预览界面,并拖动一个 ImageView 到面板上,然后 Android studio 就会弹出如下界面:

然后选择 avatars 或者 background/scenic 数据源就可以了。当然你也可以通过 xml 代码形式来设置:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout

xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

android:background=“@android:color/white”

xmlns:tools=“http://schemas.android.com/tools”

android:layout_width=“match_parent”

android:layout_height=“match_parent”>

<ImageView

android:layout_width=“36dp”

android:layout_height=“36dp”

android:id=“@+id/imageView”

android:layout_marginTop=“16dp”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintStart_toStartOf=“parent”

android:layout_marginStart=“16dp”

tools:srcCompat=“@tools:sample/avatars”/>

<TextView

android:layout_width=“0dp”

android:layout_height=“wrap_content”

android:id=“@+id/textView” app:layout_constraintStart_toEndOf=“@+id/imageView”

android:layout_marginStart=“8dp” app:layout_constraintEnd_toEndOf=“parent” android:layout_marginEnd=“16dp”

app:layout_constraintTop_toTopOf=“parent”

tools:text=“@tools:sample/lorem/random”

tools:maxLines=“8”

android:ellipsize=“end”

android:textSize=“14sp”

android:textColor=“@color/title_color” android:layout_marginTop=“16dp”

app:layout_constraintHorizontal_bias=“0.0”/>

</android.support.constraint.ConstraintLayout>

同样地,TextView 也可以通过 @tools:sample/lorem/random来添加样本数据,如此一来,效果如下:

哈哈,还不错吧?。那么问题来了,如果我们想要用自己的样本数据源呢?

2、自定义 sample data 如果我们想要是用自己定制化的样例数据,该如何做呢?其实很简单,只需要在 app目录下创建 sample data directory就可以了:

接下来,我们就可以在里面定制我们自己的数据了,在刚建好的sampledata 目录下新建一个 txt 格式的数据文件,如 users,然后在里面创建如下数据:

如此这般,同理创建我们的其他数据:titles、descriptions,然后在上述 card_item_layout.xml 布局文件中替换并使用自己的数据源:

<TextView

android:id=“@+id/card_item_username”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“16dp”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintStart_toStartOf=“@+id/card_item_title”

app:layout_constraintEnd_toEndOf=“@+id/card_item_title”

app:layout_constraintHorizontal_bias=“0.0”

android:textSize=“12sp”

android:textColor=“#8989ae”

android:layout_marginEnd=“16dp”

android:paddingEnd=“16dp”

tools:text=“@sample/users” />

这里仅以其中一个 TextView 举例说明,其他同理。

什么?你以为到这里就讲完了?哈哈,少年,看你骨骼惊奇,再教你一招来上天入地:通过自定义 Json 格式的 数据来为控件绑定数据:

打完收工?,还是上面的例子,来看看如何通过 json 数据来绑定:

<TextView

android:id=“@+id/card_item_username”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“16dp”

app:layout_constraintTop_toTopOf=“parent”

app:layout_constraintStart_toStartOf=“@+id/card_item_title”

app:layout_constraintEnd_toEndOf=“@+id/card_item_title”

app:layout_constraintHorizontal_bias=“0.0”

android:textSize=“12sp”

android:textColor=“#8989ae”

最后

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。

所以,长征路还长,大家还是好好地做个务实的程序员吧。

最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为AI,我无法访问您的设备或操作系统,因此无法确定您的具体问题。您可能需要提供更多细节或错误消息以便我能够为您提供更好的帮助。同时,您可以在Android开发者网站上寻找相关文档和资源,或者联系技术支持人员以获取帮助。 ### 回答2: Android tools是一种用于开发Android应用程序的工具集。如果无法安装Android tools,可能是因为以下几个原因。 首先,可能是由于操作系统的兼容性问题导致无法安装。Android tools通常需要在特定版本的操作系统上安装,如果你的系统不兼容,那么安装就会失败。此时,你可以尝试更新操作系统或者查找适用于你操作系统版本的其他版本的Android tools。 其次,可能是由于网络问题导致无法下载或安装Android tools。有时候,下载安装包需要在稳定的网络环境下进行,如果网络不稳定或者下载服务器不可访问,那么安装就可能会失败。此时,你可以尝试在其他网络环境下安装或者稍后再试。 还有可能是由于系统设置的限制导致无法安装Android tools。有些操作系统会设置安装限制,只允许从特定来源或者授信的开发者处安装应用程序。如果你的系统有此类限制,并且Android tools不在安装列表中,那么你需要修改系统设置以允许从其他来源进行安装。 最后,如果你尝试了以上方法仍然无法安装Android tools,那么可能是安装包本身存在问题。你可以尝试从官方渠道重新下载合法的Android tools安装包,或者寻求技术支持以解决问题。 总结来说,无法安装Android tools可能是由于操作系统兼容性、网络问题、系统设置限制或者安装包问题导致的。根据具体情况,你可以尝试不同的解决方法来解决该问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值