在 View 上扩展 LinearLayout 有什么好处?
What are the benefits of extending LinearLayout over View?
我正在尝试构建一个音板应用程序,它会在您点击自定义视图时播放声音。为了组织我的 UI,我使用了布局文件。
当我扩展 View
时,我发现当我试图膨胀我的布局时,它不起作用。
//Didn't work
View v = View.inflate(context, R.layout.sound_view_layout, null);
然而,当我扩展 LinearLayout
时,它确实起作用了。
//Worked
View v = View.inflate(context, R.layout.sound_view_layout, this);
我的问题是,
为什么我需要扩展布局 class 才能使程序运行,这样做有什么好处?
好吧,你只能膨胀一个布局。如果只想创建一个视图,请使用 new CustomView(context)
.
忽略这一点 - 扩展布局的主要原因是,如果您想以编程方式向其添加子项,或者如果它已经是一个视图集合(例如,您可能想创建一个视图 CaptionedPhoto,其中包含图像文本顶部。实现此目的的一种方法是使 CaptionedPhoto 扩展 LinearLayout 并保留图像视图和文本视图)。
我正在尝试构建一个音板应用程序,它会在您点击自定义视图时播放声音。为了组织我的 UI,我使用了布局文件。
当我扩展 View
时,我发现当我试图膨胀我的布局时,它不起作用。
//Didn't work
View v = View.inflate(context, R.layout.sound_view_layout, null);
然而,当我扩展 LinearLayout
时,它确实起作用了。
//Worked
View v = View.inflate(context, R.layout.sound_view_layout, this);
我的问题是,
为什么我需要扩展布局 class 才能使程序运行,这样做有什么好处?
好吧,你只能膨胀一个布局。如果只想创建一个视图,请使用 new CustomView(context)
.
忽略这一点 - 扩展布局的主要原因是,如果您想以编程方式向其添加子项,或者如果它已经是一个视图集合(例如,您可能想创建一个视图 CaptionedPhoto,其中包含图像文本顶部。实现此目的的一种方法是使 CaptionedPhoto 扩展 LinearLayout 并保留图像视图和文本视图)。