Android自定义视图布局问题



简短而温馨的总结:

当一个类从View派生到ViewGroup派生时,传递给onSizeChanged的高度和/或宽度参数在LinearLayout中使用时对我的类不一致。当使用ViewGroup作为超类以实现一致的结果时,是否有任何额外的信息需要提供?

长版:

我已经创建了一个自定义的视图派生的视觉控件,我使用像自定义按钮。我从View派生,然后像这样把它添加到我的布局中:

类声明:

public class GameButton extends View {
xml:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:orientation="horizontal"
        android:layout_weight="1">
        <com.myname.myapp.controls.GameButton
            android:id="@+id/button1"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1" />

我想得到一点花哨的控制,所以我已经改变了它从ViewGroup或ViewGroup的任何子类派生(目前试图使它成为一个RelativeLayout,例如)。只要我这样做,它就消失了。

我添加了日志记录来查看传递给onsizechange的值,并且我得到0高度被传递给onsizechange为我的控件的每个实例,没有改变布局xml(上面),否则当我直接从视图派生。

我是否需要添加任何额外的提示,参数或布局参数无论是到xml或在代码从视图切换到ViewGroup?

您需要实现onMeasure()来告诉工具包您的大小(您必须在onMeasure()的末尾调用setMeasuredDimension())。ViewGroup,默认情况下,根据它们的子元素来计算它们的大小这里没有,所以大小是0x0

相关内容

  • 没有找到相关文章

最新更新