我通常创建一个自定义视图,例如,
public class MyView extends LinearLayout{
public MyView(Context context){
super(context);
//Inflating my custom layout
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.view_layout, this);
}
}
上述布局的问题是,它会在其中创建一个新的LinearLayout
并膨胀R.layout.view_layout
,添加一个不受欢迎的新视图层次结构。
R.layout.view_layout
包含RelativeLayout
许多子元素,我无法通过扩展以编程方式添加它们RelativeLayout
(因为定位很困难)。
拥有不必要的层次结构会减慢我的应用程序。
custom views/view group
在没有额外层次结构的情况下创建的最佳方法是什么。
根据 CommonsWare 的解决方案:
XML 布局:
<merge>
<TextView ...
.../>
More items
</merge>
由于 XML 布局已RelativeLayout
作为父视图,我将RelativeLayout
在代码中扩展而不是LinearLayout
public class MyView extends RelativeLayout{
public MyView(Context context){
super(context);
//Inflating my custom layout
LayoutInflater inflater = getLayoutInflater();
inflater.inflate(R.layout.view_layout, this);
}
}