【问题标题】:Best way to create a custom View class from an xml layout file?从 xml 布局文件创建自定义视图类的最佳方法?
【发布时间】:2012-01-14 19:18:05
【问题描述】:

我在名为“myview.xml”的 xml 布局文件中定义了一个 RelativeLayout,其中包含许多子视图(TextViews、ImageViews 等)。

我想创建一个名为“MyView”的 View 对象/类来表示这个 RelativeLayout,它允许我使用我将定义的方法更改子视图的属性,这样我就可以添加(和检索) MyView 以编程方式到(从)其他视图。

最好的方法是什么?目前我正在创建一个名为“MyView”的类,它扩展了 FrameLayout,并在覆盖 FrameLayout 的三个构造函数时调用了以下方法......

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.myview, null);
addView(view);

...这可行,但这意味着我所有的 RelativeLayouts 都包含在 FrameLayouts 中,因此我的视图层次结构中有一个额外的(不必要的)层...

【问题讨论】:

    标签: android android-custom-view android-view


    【解决方案1】:

    我做的几乎一样。但是我发送'this'而不是null,并且不将该视图添加到父视图。

    LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.myview, this);
    

    【讨论】:

    • 感谢疯狂米克的回复。如果我正确理解了inflate 方法,这仍然意味着我的视图层次结构中有一个额外的层,但很高兴知道我不是一个人在做这件事,而且你的方法少了一个方法调用,所以会去吧! :)
    猜你喜欢
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多