简短而甜蜜的总结:
将类从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或代码中添加任何其他提示,参数或布局参数?
答案 0 :(得分:1)
你需要实现onMeasure()告诉工具包你的大小(你必须在onMeasure()的末尾调用setMeasuredDimension()。)默认情况下,ViewGroup根据他们的孩子来计算他们的大小你不会这里有任何一个,所以大小是0x0。