博客
关于我
Android 布局优化之<include/><merge/>和 <ViewStub>
阅读量:622 次
发布时间:2019-03-13

本文共 1956 字,大约阅读时间需要 6 分钟。

Excellent, let's optimize the provided content according to your requirements.

By marking up a layout for reuse in Android development, developers often need to reuse complex components like title bars. This can be efficiently achieved by creating a reusable layout file called include_toolbar.xml, which contains a Toolbar widget with a TextView inside it.

Here’s an example of the include_toolbar.xml layout file:

Now, in your activity_main, you can include this toolbar layout using the <include> tag:

When using the <include> tag in your layout, here are some important points to keep in mind:

  • The <include> tag’s id attribute will override the id attribute of the included layout’s root node.
  • The <include> tag’s layout_* attributes will override the included layout’s root node’s layout_* attributes.
  • In ConstraintLayout, using the <include> tag requires the included view to have layout_width and layout_height attributes defined.
  • To reduce the layout hierarchy levels, you can use the <merge> tag when including views. This helps in avoiding unnecessary nested layouts, which can affect performance:

    When this view is included in another layout, the <merge> tag will be ignored, and the buttons will be placed directly in the布局.

    If you need to load a layout only when it’s actually required, you can use the <ViewStub> tag. This allows you to defer the loading of these layouts until they are needed:

    The ViewStub layout can be inflated when needed using either:

    val errorView = findViewById
    (R.id.view_stub).inflate()

    It’s important to note that inflate() can only be called once. After the first call, the ViewStub will no longer be part of the view hierarchy, and its original id will only be valid until the layout is inflated.

    By following these principles, you can efficiently manage layout reuse and optimize your Android development workflow.

    转载地址:http://meoaz.baihongyu.com/

    你可能感兴趣的文章
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>