在Android中LayoutInflater的用途是什么?


当前回答

该类用于将布局XML文件实例化到相应的View对象中。永远不能直接使用它——使用getLayoutInflater()或getSystemService(String)来检索一个标准的LayoutInflater实例,该实例已经连接到当前上下文,并且为正在运行的设备正确配置了。例如:

LayoutInflater inflater = (LayoutInflater)context.getSystemService
      (Context.LAYOUT_INFLATER_SERVICE);

参考:http://developer.android.com/reference/android/view/LayoutInflater.html

其他回答

LayoutInflater是Android的一个基本组件。您必须一直使用它来将xml文件转换为视图层次结构。

LayoutInflater类用于将布局XML文件的内容实例化到相应的View对象中。

换句话说,它接受一个XML文件作为输入,并从中构建View对象。

下面是一个示例,用于获取布局的根视图的引用, 膨胀它并使用setContentView(视图视图)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LayoutInflater li=getLayoutInflater();
    View rootView=li.inflate(R.layout.activity_main,null);
    setContentView(rootView);


}

layoutinflater . inflation()提供了一种方法,可以将定义视图的res/layout/*.xml文件转换为应用程序源代码中可用的实际视图对象。

基本的两个步骤:获取膨胀器,然后对资源进行膨胀

你怎么拿到充气机?

LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

假设xml文件是“list_item.xml”,您如何获得视图?

View view = inflater.inflate(R.layout.list_item, parent, false);

当你在ListView中使用自定义视图时,你必须定义行布局。 你创建了一个xml,你放置android小部件,然后在适配器的代码中,你必须这样做:

public MyAdapter(Context context, List<MyObject> objects) extends ArrayAdapter {
  super(context, 1, objects);
  /* We get the inflator in the constructor */
  mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view;
  /* We inflate the xml which gives us a view */
  view = mInflater.inflate(R.layout.my_list_custom_row, parent, false);

  /* Get the item in the adapter */
  MyObject myObject = getItem(position);

  /* Get the widget with id name which is defined in the xml of the row */
  TextView name = (TextView) view.findViewById(R.id.name);

  /* Populate the row's xml with info from the item */
  name.setText(myObject.getName());

  /* Return the generated view */
  return view;
}

在官方文档中阅读更多信息。