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

时间:2011-01-01 23:39:06

标签: android android-inflate

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

7 个答案:

答案 0 :(得分:244)

当您编写XML布局时,Android OS将膨胀,这基本上意味着它将通过在内存中创建视图对象来呈现。让我们称之为隐含通胀(操作系统会为您充气)。例如:

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);
    }
}

您还可以使用LayoutInflater明确夸大视图。在这种情况下,你必须:

  1. 获取LayoutInflater
  2. 的实例
  3. 指定要充气的XML
  4. 使用返回的View
  5. 例如:

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

答案 1 :(得分:153)

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

答案 2 :(得分:29)

Inflating 是在运行时向活动添加视图(.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...

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

RelativeLayout rel = new RelativeLayout();

rel.addView(but);

现在,如果我们想在右下角添加按钮,在底部添加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);

答案 3 :(得分:4)

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

答案 4 :(得分:1)

因为我们将UI设置为XML,但视图对象是我们显示的,所以我们需要将xml转换为视图对象,因此膨胀意味着我们将xml转换为视图对象以便可以显示它,为此我们需要一个名为的服务布局充气服务并给它一个xml,它将为你转换。

答案 5 :(得分:0)

通货膨胀的外行定义可能是将XML代码转换为Java代码。只是一种了解的方式,例如,如果我们有XML标记,则OS必须在内存中创建相应的Java对象,因此,inflatter会读取XMLtags,并以Java创建相应的对象。

答案 6 :(得分:0)

iOS UIKit 领域中,这意味着获取对 .Xib(这是 XML,就像 android)文件的引用并添加 到当前 ViewController 的视图层次结构。