从xml文件中扩展视图意味着什么?

Bre*_*ein 270 android android-inflate

我是Android开发的新手,并且不断参与布局xml文件中的Inflating视图的引用.我用Google搜索并搜索了开发指南,但仍无法理解其含义.如果有人能提供一个非常简单的例子,那就非常感激了.

Cri*_*ian 250

当您编写XML布局时,它将被Android操作系统夸大,这基本上意味着它将通过在内存中创建视图对象来呈现.让我们称之为隐式通货膨胀(操作系统会为您提供充足的观点).例如:

class Name extends Activity{
    public void onCreate(){
         // the OS will inflate the your_layout.xml
         // file and use it for this activity
         setContentView(R.layout.your_layout);
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下方法明确地对视图进行充气LayoutInflater.在这种情况下,你必须:

  1. 获取一个实例 LayoutInflater
  2. 指定要膨胀的XML
  3. 使用返回的 View

例如:

LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
Run Code Online (Sandbox Code Playgroud)

  • 如果inflate = rendering,那么onDraw()的用途是什么? (24认同)
  • 我不认为膨胀是渲染相当膨胀是基于xml文件内容在内存中实际创建View对象.在膨胀之后,视图将在内存中不一定可见. (21认同)
  • @MattJ。好吧,我的回答可能措辞不当。Android 将 _inflate_ 视图不仅通过在某处放置 XML,而且当您调用 setContentView 或手动膨胀布局时。当您调用`findViewById` 时,视图对象已经在内存中,您这样做的唯一原因是获取对该特定对象的引用(更改它或从中获取数据)。 (4认同)

jjb*_*jjb 156

"膨胀"视图意味着获取布局XML并对其进行解析以根据在其中指定的元素及其属性创建视图和视图组对象,然后将这些视图和视图组的层次结构添加到父ViewGroup.当您调用setContentView()时,它会将通过读取XML创建的视图附加到活动上.您还可以使用LayoutInflater将视图添加到另一个ViewGroup,这在很多情况下都是一个有用的工具.

  • 这对我来说听起来更准确. (22认同)
  • 在这种情况下,"膨胀"意味着框架从XML获取布局描述并使用实际的View对象填充视图层次结构.因此,在填写布局的意义上,它正在膨胀. (6认同)
  • 我自己仍然对"通货膨胀"术语感到困惑.(如果我只能停止描绘空气进入某物).但也许这会有所帮助:我只是在Ubuntu终端上运行解压缩程序并注意到术语:"膨胀:X/Y/z.xml." 我想这是一个相同的概念. (4认同)

Xar*_*mer 32

膨胀是在运行时向活动添加视图(.xml)的过程.当我们创建一个listView时,我们动态地为每个项目充气.如果我们想要创建一个具有多个视图(如按钮和textview)的ViewGroup.我们可以创建它

Button but = new Button();
but.setText ="button text";
but.background ...
but.leftDrawable.. and so on...

TextView txt = new TextView();
txt.setText ="button text";
txt.background ... and so on...
Run Code Online (Sandbox Code Playgroud)

然后我们必须创建一个布局,我们可以添加上面的视图

RelativeLayout rel = new RelativeLayout();

rel.addView(but);
Run Code Online (Sandbox Code Playgroud)

现在,如果我们想在右下角添加按钮,在底部添加textview.我们必须做很多工作.首先是视图属性,其次我们必须应用多个约束.这是一项艰巨而耗时的工作.

Android让我们可以轻松地创建一个简单的.xml并在xml中设计它的样式和属性,只需在我们需要的地方简单地膨胀它,而不会混淆设置约束并以编程方式设置它.

LayoutInflater inflater = 
              (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View menuLayout = inflater.inflate(R.layout.your_menu_layout, mainLayout, true);
//now add menuLayout to wherever you want to add like

(RelativeLayout)findViewById(R.id.relative).addView(menuLayout);
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢你通过展示如何手动进行通货膨胀来描述通货膨胀的实际情况。 (2认同)

小智 6

我认为这里“膨胀视图”意味着获取 layout.xml 文件,绘制在该 xml 文件中指定的视图,并使用创建的视图填充(=膨胀)父视图组。


小智 5

通货膨胀的外行定义可能是将 XML 代码转换为 Java 代码。只是一种理解,例如,如果我们有一个 XML 标记,操作系统必须在内存中创建一个相应的 Java 对象,因此 inflatter 读取 XML 标记,并在 Java 中创建相应的对象。