首页 文章

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

提问于
浏览
253

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

5 回答

  • 150

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

  • 29

    当您编写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);
        }
    }
    

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

    • 获取 LayoutInflater 的实例

    • 指定要膨胀的XML

    • 使用返回的 View

    例如:

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

    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);
    
  • 236

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

  • 1

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

相关问题