Android - 何时将父 ViewGroup 传递给 LayoutInflater.inflate?
Android - When to pass the parent ViewGroup to LayoutInflater.inflate?
我的应用程序中有一个简单的 ListView。 ListView 使用如下实现的 getView
方法绑定到我的 ArrayAdapter class。
class ScheduleListAdapter extends ArrayAdapter<ScheduleItem>
{
@Override public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = _activity.getLayoutInflater().inflate(R.layout.schedule_item2, null);
}
// not shown - code initialize elements of view
return view;
}
在上面的代码中,请注意 parent
ViewGroup 参数被忽略并且没有传递给 inflate
调用。我根据几本书和在线示例对这段代码进行了建模。
但现在我在网上看到其他例子表明 parent
需要传递给 inflate
如下:
View view = inflater.inflate(R.layout.schedule_item2, parent, false);
两种方法我都试过了,似乎两种方法都能正常工作。但是查看用于初始化视图的 source for inflate, it seems that when the parent
is passed, it can influence the LayoutParams 。但我不确定如何解释除此之外的代码。
当您将以上内容与将 LayoutInflater 与 Fragments 和 RecyclerView 一起使用的其他在线示例进行比较时,您会感到困惑。这些示例似乎总是明确地将 parent
参数传递给 inflate
。我假设在某些情况下这样做是有意义的。
谁能解释一下何时将 ViewGroup parent
传递给 inflate
以及何时不传递?
因此,没有任何已知父项,您在 XML 树的根元素上声明的所有 LayoutParams 都将被丢弃。
如果没有 LayoutParams,最终承载膨胀布局的 ViewGroup 将留给您生成一个默认集。如果你很幸运(在很多情况下你是),这些默认参数与你在 XML
中的相同
ViewGroup: Optional view to be the parent of the generated hierarchy
(if attachToRoot is true), or else simply an object that provides a
set of LayoutParams values for root of the returned hierarchy (if
attachToRoot is false.)
这意味着你经历了什么。
何时传递:指定哪个是父项,此 view
必须附加到父项。如果未附加,将使用 parent
中的唯一 LayoutParams。
我的应用程序中有一个简单的 ListView。 ListView 使用如下实现的 getView
方法绑定到我的 ArrayAdapter class。
class ScheduleListAdapter extends ArrayAdapter<ScheduleItem>
{
@Override public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = _activity.getLayoutInflater().inflate(R.layout.schedule_item2, null);
}
// not shown - code initialize elements of view
return view;
}
在上面的代码中,请注意 parent
ViewGroup 参数被忽略并且没有传递给 inflate
调用。我根据几本书和在线示例对这段代码进行了建模。
但现在我在网上看到其他例子表明 parent
需要传递给 inflate
如下:
View view = inflater.inflate(R.layout.schedule_item2, parent, false);
两种方法我都试过了,似乎两种方法都能正常工作。但是查看用于初始化视图的 source for inflate, it seems that when the parent
is passed, it can influence the LayoutParams 。但我不确定如何解释除此之外的代码。
当您将以上内容与将 LayoutInflater 与 Fragments 和 RecyclerView 一起使用的其他在线示例进行比较时,您会感到困惑。这些示例似乎总是明确地将 parent
参数传递给 inflate
。我假设在某些情况下这样做是有意义的。
谁能解释一下何时将 ViewGroup parent
传递给 inflate
以及何时不传递?
因此,没有任何已知父项,您在 XML 树的根元素上声明的所有 LayoutParams 都将被丢弃。 如果没有 LayoutParams,最终承载膨胀布局的 ViewGroup 将留给您生成一个默认集。如果你很幸运(在很多情况下你是),这些默认参数与你在 XML
中的相同ViewGroup: Optional view to be the parent of the generated hierarchy (if attachToRoot is true), or else simply an object that provides a set of LayoutParams values for root of the returned hierarchy (if attachToRoot is false.)
这意味着你经历了什么。
何时传递:指定哪个是父项,此 view
必须附加到父项。如果未附加,将使用 parent
中的唯一 LayoutParams。