对于单个布局 XML 文件来说,多少个 ViewStub 太多了?

2023-11-22

我在 XML 文件中定义了布局(base_layout.xml)其中可能包含20+ViewStub除了 3-5 个其他视图(例如ImageView and a LinearLayout含3-5个ImageButton views.

我应该关心有多少ViewStub我放置在此布局文件中的视图?

我在developer.android网站上读到:

ViewStub 是一个愚蠢且轻量级的 看法。它没有维度,它没有 画任何东西并且不参与 以任何方式在布局中。这意味着 ViewStub 非常便宜 充气并且非常便宜地保存在 查看层次结构

买20个以上够便宜吗?当然,并不是所有的都被夸大,一次只有 1-2 个。

当我说cheap enough或谈论存在concerned,我关心的是 UI 的性能

edit:我正在努力实现的目标: 创建一个布局 XML 文件,它可以作为我所有活动的骨架。每一个Activity,我会膨胀正确的ViewStub与活动的布局。由于我有很多活动需要相同的骨架,我希望尽可能地重复使用

我有一个Activity类是我几乎所有活动的父类。这个父类调用setContentView(R.layout.base_layout);。对于每个孩子的活动,我所做的就是膨胀相应的ViewStub inside base_layout.xml。这样做可以让我拥有一个非常定制的 UI,并且在所有活动布局上使用相同的骨架视图


我认为您不会看到性能受到很大影响。它仍然比从一开始就将它们全部充气要便宜。

拥有如此多存根的缺点是您可能会忽视整个设计。也许将多个视图/项目分组到一个视图组中更有意义。也许你可以解释一下你正在尝试做什么,看看是否有更好的方法来实现它

edit:好吧,而不是拥有多个包含不同子视图的 ViewStub,例如

<ViewStub android:id="@+id/stub"
           android:inflatedId="@+id/activity1"
           android:layout="@layout/myActivity1"
           />
<ViewStub android:id="@+id/stub2"
           android:inflatedId="@+id/activity2"
           android:layout="@layout/myActivity2"
           />

只需有一个 ViewStub 并在您的活动 onCreate() 中执行类似的操作

setContentView(R.layout.base_layout);
ViewStub stub = (ViewStub)findViewById(R.id.stub);

stub.setInflateId(R.id.activity1);
stub.setLayoutResource(R.layout.myActivity2);
stub.inflate();

这样,您的 base_layout 中仍然只有一个 ViewStub,您可以在膨胀之前在代码中进行设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于单个布局 XML 文件来说,多少个 ViewStub 太多了? 的相关文章

  • 不可变位图崩溃错误

    java lang IllegalStateException Immutable bitmap passed to Canvas constructor at android graphics Canvas
  • 在 Android 中的活动、服务和应用程序之间传递变量

    有人可以给我提供以下活动 服务 应用程序组合的示例吗 我拥有这三个 但我已经把我的应用程序弄得一团糟 试图在这个地方传递一堆变量 现在我不知道发生了什么 请注意 我是 Android 新手 最近我一直在努力解决这个问题 因为有很多方法可以实
  • 更改工具栏中汉堡图标的大小?

    我有两个问题 可能很奇怪 但无论如何 我有带有应用程序标题的工具栏 如何将其更改为非徽标的图片 下一个问题 是否可以设置 更改工具栏中汉堡图标的大小 我在下面的下一个代码的帮助下制作了经典的导航抽屉 我也使用了 ActionBarDrawe
  • 将标题设置为操作栏时出现空指针异常

    Error Caused by java lang NullPointerException Attempt to invoke virtual method void android app ActionBar setTitle java
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • Cordova 地理定位不适用于 Android

    我想在 Android 上使用地理定位 我用 Apache Cordova 编写应用程序 地理定位在 android 电脑模拟器和 android 手机上均不起作用 I try http cordova apache org docs en
  • 在 Android 上的测试用例之外运行 ExtractDecodeEditEncodeMuxTest

    我正在尝试添加在 Android 上提取 解码 编辑 编码和混合视频的功能 因此 我发现了一些非常有用的实现 它是Android CTS的一部分ExtractDecodeEditEncodeMuxTest https android goo
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • 手动启用时 Firebase Crashlytics 不报告崩溃

    Crashlytics 在没有选择加入报告的情况下也能正常工作 但一旦我根据规定设置了选择加入报告 它就会停止报告任何内容tutorial https firebase google com docs crashlytics customi
  • 更改android中禁用按钮的颜色

    有没有办法通过样式或其他形式更改 android 中禁用按钮的颜色 我目前有以下内容 可绘制 button default xml
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android开发:未定义方法

    大家好 我是 Android 和 Eclipse 的新手 我刚刚遵循了developer android com 上的教程 现在我在添加操作栏 http developer android com training basics actio
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • Android:如何通过右侧的十字按钮清除EditText

    我创建了一个EditText用于搜索 左侧包含搜索图标 右侧包含图标
  • Jetpack Compose 部分或开放侧边框

    我正在尝试绘制部分或一侧开放的矩形圆形边框以实现此效果 玩了一下之后我得到了这个 这是通过以下方式完成的 RoundedCornerShape topStartPercent 50 bottomStartPercent 50 start R
  • 基于BluetoothChat示例通过蓝牙套接字发送文件

    大家好 根据我之前问的一个问题 我已经能够将文件转换为其他字节数组 以便使用以下写入方法 public void sendFile Log d TAG sending data InputStream inputStream null Ur
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http

随机推荐

  • Swagger错误Springboot无法解析名称为“forward:/swagger-ui/index.html”的视图

    Springboot 2 5 13 swagger2 实现 io springfox springfox boot starter 3 0 0 实现 io springfox springfox swagger ui 3 0 0 运行时错误
  • ARC 下的 stringWithFormat 与 initWithFormat

    stringWithFormat 是一个类方法NSString 并返回一个自动释放的字符串 initWithFormat 是一个实例方法 在 ARC 之前 程序员必须负责返回对象的内存管理 如果我们打开ARC 这两种方法有什么区别 With
  • 如何使用 PIL 从图像中剪切自定义形状?

    我想截一张图 比如说 使用另一张具有透明背景的图片 如下所示 并得到如下结果 如何使用 Python PIL Pillow 实现此目的 或者任何其他库 但它必须是Python 的 我们打电话吧source png到第一张图像 并且mask
  • EF Core 3,优化大量 Include/ThenInclude

    我有一个这样的查询 return await ctx Activities Include a gt a Attributes Include a gt a Roles Include a gt a Bookmarks Include a
  • 如何让 Grunt 等待一个任务完成后再运行另一个任务?

    这是我的咕噜文件和output 正如您在输出中看到的 存在一些与异步任务相关的问题 imagemin被叫到 下一个就直接出现了 这使得它的输出出现在任务的最后 相当混乱 build 这是一个自定义任务 is using var done t
  • Electron 中的 WebRTC 屏幕共享

    我们有一个网络应用程序 我通过在 browserWindow 中加载 URL 来构建电子应用程序 但是当我尝试共享屏幕时 它会弹出一个窗口 提示请安装 janus webRTC 屏幕共享插件并重新启动浏览器 请帮忙 您需要在电子中实现自己的
  • 为什么使用 JOIN 子句而不是 WHERE 条件?

    我针对 Oracle 数据库进行开发 当我需要手动编写时 不使用像 hibernate 这样的 ORM 我使用 WHERE 条件而不是 JOIN 例如 这只是为了说明风格 Select from customers c invoices i
  • web.xml 验证错误

    我的 web xml 中又出现一个错误 无法将名称 javaee web appType 解析为 类型定义 组件 和 web xml 文件
  • Java - 转义字符串以防止SQL注入

    我试图在java中放置一些反sql注入 但发现使用 replaceAll 字符串函数非常困难 最终我需要一个函数来转换任何现有的 to any to any to 以及任何 n to n这样当 MySQL 评估该字符串时 SQL 注入就会被
  • 如何简化 (IO (Either a b)) 中的错误处理

    我使用以下场景作为示例来学习如何以简单的方式处理错误 该场景基本上是从环境变量中读取文件路径 然后使用文件路径读取并打印文件 以下代码有效 但我不喜欢printFile因为它已经嵌套了case of 有点难读 我想知道是否有一种干净的方法来
  • 如何阻止 Richfaces 添加边框到面板和日历?

    我希望使用自定义的 richfaces 皮肤来处理我的大部分演示工作 不幸的是 richfaces 在日历组件中的每个单元格和每个面板周围呈现边框 我想将它们关闭 以便那天的数字位于一个没有边界的开放网格中 没有明显的方法可以使用日历控件的
  • Github GraphQL - 获取存储库的提交列表

    我正在使用 GraphQL 使用 Github 的 GraphQL v4 API 从存储库列表中获取一些数据 我想要一份清单最新提交来自存储库 无论提交的分支 标签 引用是什么 现在 我正在执行以下操作来从某个存储库获取提交列表 on Re
  • 如何使浮动操作按钮背景渐变?

    FAB的代码
  • 以编程方式获取 GPU 利用率

    是否有获取 GPU 当前负载的标准方法 我正在寻找类似于显示 CPU 的任务管理器的东西 GPU Z 等实用程序显示了这个值 但我不确定它是如何得到这个值的 我目前对 AMD 显卡特别感兴趣 任何指示都会有帮助 如果没有干净的 API 方法
  • Flask-sqlalchemy 查询日期时间间隔

    我用flask sqlalchemy定义了一个表 显示如下 class Notes db Model id db Column db Integer primary key True notes db Column db Text null
  • 具有多态类型的 STUArray

    我想使用以下方法实现一个算法ST单子和STUArrays 我希望它能够与两者一起使用Float and Double data 我将演示一个更简单的示例问题 计算记忆值scanl 0 我知道这可以解决 无需STUArray 仅用作示例 LA
  • Bootstrap 轮播全屏

    我试图让引导程序轮播中的图像显示全屏 但一直无法弄清楚 我已经为此工作了一段时间 但完全陷入困境 现在我只有一张图片 但一旦它起作用我会添加更多
  • 解释C++中语句和表达式的区别

    我试图彻底理解 a 之间的区别陈述 and an 表达但即使读完这个答案我还是觉得很困惑表达与陈述看看以下内容 std cout lt lt Hello there 我可以说这是一个声明 因为它以分号但我也可以说这是一个表达式 因为我有一个
  • Hadoop HADOOP_CLASSPATH 问题

    这个问题并不是指在整个集群中分发 jar 供工作人员使用它们 它指的是在客户端计算机上指定一些附加库 更具体地说 我尝试运行以下命令来检索 SequenceFile 的内容 path to hadoop script fs text pat
  • 对于单个布局 XML 文件来说,多少个 ViewStub 太多了?

    我在 XML 文件中定义了布局 base layout xml 其中可能包含20 ViewStub除了 3 5 个其他视图 例如ImageView and a LinearLayout含3 5个ImageButton views 我应该关心