Android自定义视图布局问题

时间:2011-07-21 16:59:25

标签: java android layout user-interface

简短而甜蜜的总结:

将类从View更改为派生到ViewGroup派生时,传递给onSizeChanged的高度和/或宽度参数在使用LinearLayout时我的类不一致。当使用ViewGroup作为超类来实现一致的结果时,是否需要提供任何其他信息?

长版:

我创建了一个自定义的View派生视觉控件,我正在使用它像一个自定义按钮。我派生自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)。一旦我这样做,它就会消失。

我添加了日志以查看传递给onSizeChanged的值,并且我为我的控件的每个实例传递了0高度onSizeChanged而没有更改布局xml(上面),否则当我直接派生时图。

从View切换到ViewGroup时,是否需要向xml或代码中添加任何其他提示,参数或布局参数?

1 个答案:

答案 0 :(得分:1)

你需要实现onMeasure()告诉工具包你的大小(你必须在onMeasure()的末尾调用setMeasuredDimension()。)默认情况下,ViewGroup根据他们的孩子来计算他们的大小你不会这里有任何一个,所以大小是0x0。