Android:如何在Object中封装layout.xml

时间:2012-07-17 14:37:10

标签: android android-layout

我有布局文件,我在屏幕上动态充气。 然后在我的活动中,我必须初始化一些UI逻辑(听众等等)。

但现在这个逻辑需要转移到某个类。我无法决定在xml中创建具有布局的基于视图的对象的最佳方式。

public MyView extends View {
    MyView(Context context) {
        super(context);
        //inflation here...        
    }

OR

MyViewFactory {
    View get(Inflater inflater) {

    }

或其他什么?

可能有人也可以推荐在哪里寻找源代码。

1 个答案:

答案 0 :(得分:3)

您可能不希望使用像ImageView这样的简单视图来执行此操作。你希望它是一个更复杂的布局(包含按钮的线性布局等)?

如果您需要第一个,那么最好使用简单的视图实例,例如ImageView img = new ImageView(context);或工厂,如果您认为更简单的设置它们在xml中,则涉及更多参数。

就更复杂的布局而言,我更喜欢使用扩展一些viewGroups的自定义类(赞: MyView extends LinearLayout

创建一个名为init();

的函数

从每个构造函数中调用函数

在里面实现类似:

LayoutInflater.from(context).inflate(R.layout.my_layout,this,true);

+ true 表示布局将附加到根目录,在本例中为linearLayout,您可以直接在viewgroup上使用findViewById)

ImageView img = findViewById(R.id.myView);

我发现创建自定义视图非常重要,因为它们始终包含特定于它们的逻辑并且可以重复使用,并且还会公开一些公共方法以从包含自定义视图的活动中调用。