Answers:
编写XML布局时,Android操作系统会夸大 XML布局,这基本上意味着它将通过在内存中创建视图对象来呈现它。我们称其为隐式膨胀(操作系统将为您膨胀视图)。例如:
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
。在这种情况下,您必须:
LayoutInflater
View
例如:
LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4
findViewById
视图对象时,它们已经在内存中了,这样做的唯一原因是获取对该特定对象的引用(更改它或从中获取数据)。
“膨胀”视图意味着获取布局XML并对其进行解析,以根据其中指定的元素及其属性创建视图和视图组对象,然后将这些视图和视图组的层次结构添加到父视图组。调用setContentView()时,它会将通过读取XML创建的视图附加到活动中。您还可以使用LayoutInflater将视图添加到另一个ViewGroup,这在许多情况下都是有用的工具。
膨胀是在运行时将视图(.xml)添加到活动的过程。创建listView时,我们会动态为其增加每个项目。如果我们要创建一个具有多个视图(例如按钮和文本视图)的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);
现在,如果我们想在右角添加一个按钮,并在底部添加一个文本视图,我们必须做很多工作。首先通过实例化视图属性,然后应用多个约束。这很费时间。
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);
我认为这里的“放大视图”是指获取layout.xml文件,以绘制该xml文件中指定的视图,并使用创建的View将父viewGroup进行POPULATING(= inflating)。