Android自定义LinearLayout和膨胀xml

时间:2012-09-02 05:02:55

标签: android android-linearlayout android-custom-view layout-inflater

我有一个xml布局,当它膨胀到View对象时,布局会按预期显示。但是,我创建了一个自定义LinearLayout类,并在使用

创建类的实例时膨胀xml布局
LayoutInflater.from(context).inflate(R.layout.icon_item, this, true);

在构造函数中。我没有在自定义LayoutParams类上设置任何LinearLayout或任何内容,当我尝试显示自定义类时,似乎有一些奇怪的边距会切断布局中的一些文本内部。

我想知道是否有任何方法可以设置自定义LinearLayout,因此它对布局xml没有影响,但只是作为一个不可见的容器。我认为在充气时将“attachToRoot”设置为true会解决这个问题,但是没有按预期工作。

1 个答案:

答案 0 :(得分:0)

inflate(..)与attachToRoot = true一起使用时,这相当于将XML物理放置在ViewGroup中,如下所示:

<LinearLayout ..>
  <TextView .. />
</LinearLayout>

同样意味着当measure'由LinearLayout布局时,它将继承您正在膨胀的xml布局中强加的任何布局属性。

因此,如果您<TextView..>包含android:layout_margin="8dp"padding,那么您的CustomLinearLayout也会使用这些Layout属性布局视图。

如果您希望我为您修复/创建更好的解决方案,我会发布更多代码。