3

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

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

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

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

4

1 回答 1

0

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

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

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

因此,如果您<TextView..>包含android:layout_margin="8dp"padding例如,您CustomLinearLayout还将使用这些Layout属性来布局视图。

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

于 2013-01-28T15:05:35.280 回答