我是新的android开发和不断遇到引用膨胀视图从一个布局xml文件。我在谷歌上搜索了开发指南,但仍然不能理解它的意思。如果有人能提供一个非常简单的例子,我将不胜感激。
当你写一个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显式地膨胀视图。在这种情况下,你必须:
获取LayoutInflater的一个实例 指定要膨胀的XML 使用返回的视图 设置带有返回视图的内容视图(如上所示)
例如:
LayoutInflater inflater = LayoutInflater.from(YourActivity.this); // 1
View theInflatedView = inflater.inflate(R.layout.your_layout, null); // 2 and 3
setContentView(theInflatedView) // 4
“膨胀”视图意味着获取布局XML并对其进行解析,以根据其中指定的元素及其属性创建视图和视图组对象,然后将这些视图和视图组的层次结构添加到父viewgroup中。当调用setContentView()时,它会将读取XML时创建的视图附加到活动中。您还可以使用LayoutInflater将视图添加到另一个ViewGroup,这在很多情况下都是一个有用的工具。
膨胀是在运行时向活动添加视图(.xml)的过程。当我们创建一个listView时,我们动态地膨胀它的每个项。如果我们想创建一个包含多个视图的ViewGroup,比如buttons和textview,我们可以这样创建:
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);
因为我们将UI转换为XML,而视图对象是我们要显示的所以我们需要将XML转换为视图对象膨胀意味着我们要将XML转换为视图对象这样它才能显示,为此我们需要一个名为layout inflator service的服务给它一个XML,它就会为你进行转换。
膨胀的外行定义可能是将XML代码转换为Java代码。只是一种理解的方式,例如,如果我们在XML中有一个标签,操作系统必须在内存中创建一个相应的Java对象,因此inflater读取XML标签,并在Java中创建相应的对象。
在iOS UIKit宇宙中,这意味着获得对. xib(这是XML,就像android)文件的引用,并将其添加到当前ViewController的视图层次结构中。
推荐文章
- 在Android Studio中改变矢量资产的填充颜色
- 在构建中编写注释的语法是什么?gradle文件?
- 如何以编程方式添加按钮色调
- 用Android Studio进行调试永远停留在“等待调试器”状态
- Openssl不被视为内部或外部命令
- 无法执行dex:在Eclipse中超过GC开销限制
- 如何以编程方式将视图添加到视图
- 单击url会打开默认浏览器
- 使用Retrofit刷新OAuth令牌,而不修改所有调用
- 多个dex文件定义了landoid /support/v4/accessibilityservice/AccessibilityServiceInfoCompat
- 如何获得动作栏的高度?
- 从活动外部调用startActivity() ?
- createScaledBitmap的过滤器参数做什么?
- 为什么我在使用adb时访问数据文件夹被拒绝?
- 如何确定Android设备的GPS是否已启用