在研究如何在Android中创建自定义复合视图时,我经常遇到这种模式(示例来自Orange11 blog):
public class FirstTab extends LinearLayout {
private ImageView imageView;
private TextView textView;
private TextView anotherTextView;
public FirstTab(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.firstTab, this);
}
}
我主要理解这是如何工作的,除了调用inflate()的部分。文档说该方法返回一个View对象,但在此示例中,作者不会将结果存储在任何位置。在通货膨胀之后,新的View是如何从与此类关联的XML创建的?我想把它分配给“这个”,但这似乎非常错误。
感谢您的任何澄清。
答案 0 :(得分:2)
this 的引用将是viewgroup root。看这里: http://developer.android.com/reference/android/view/LayoutInflater.html#inflate(int,android.view.ViewGroup)
这意味着它是通过 this 作为父视图从xml中膨胀指定视图。 xml最终位于由类定义的Linear布局内。
编辑:输入完整的链接,因为我似乎无法获得带括号的网址以正确转义