java - Android Studio 中的“布局”和“布局资源”一样吗?如何以编程方式创建 XML 布局资源?
问题描述
我真的被这两个概念弄糊涂了。我知道“布局资源”是指一些 XML 格式的文件,例如“activity_main.xml”,并且在 XML 文件中有一个布局。所以“布局”和“布局资源”可能不同,我想。
今天在使用时inflate (int resource, ViewGroup root, boolean attachToRoot)
,不知道如何获取“资源”(又名 XML 文件)的 ID,因为我只是通过编程为 ListView 创建了一个新布局来显示项目,而我只能获取 ID使用mylayout.setId(View.generateViewId())
. 但我不知道“资源”的 ID,因为我从不创建 XML 文件。布局的 ID 是否等于其 XML 文件的 ID?
所以问题来了:当我只以编程方式创建布局时,如何获取它的 XML 文件?我应该创建 XML 文件而不是布局吗?如果是这样,我如何以编程方式制作新的 XML 文件?
解决方案
您可以通过以下方式直接访问id
您的 xml 文件:int id = R.layout.activity_main
请注意,这id
与 xml 文件本身相关联。要访问布局文件中特定视图的 id,请替换layout
为id
: R.id.my_view_id
。
例如,如果要充气my_layout.xml
,可以传入R.layout.my_layout
的resource
参数inflate (int resource, ViewGroup root, boolean attachToRoot)
。
当您在运行时扩展布局时,您正在使用现有的xml 文件来创建布局。Alayout resource
是一个layout
。布局只是代表您的 UI 的抽象。它没有提到任何具体的东西。
此外,您不能以编程方式(而不应该)“创建”xml 布局以在运行时生成 UI。但是,您可以通过编程方式创建一个视图或一组视图。ViewGroup
推荐阅读
- python - 烧瓶 SQL-Alchmey 在查询时不返回字典
- java - 如何打印对象的内容
- python - 类型错误:__init__() 缺少 1 个必需的位置参数:临时邮件 python 中的“api_key”
- reactjs - 如何将“strinsert”自定义下拉插件添加到 ckeditor4-react?
- python - 自动包装/装饰所有 pytest 单元测试
- laravel - 如何在 My Laravel Vue 项目中获取多个关系数据
- javascript - 如何从谷歌云应用引擎与外部 exe 程序通信?
- php - FPDF在一个单元格中设置2个连续值
- typescript - “TS7030:并非所有代码路径都返回值”与 ESLint “no-undefined”和“no-useless return”冲突解决
- python - 使用泊松似然的 GP 回归