gpt4 book ai didi

java - Android自定义 View 布局问题

转载 作者:行者123 更新时间:2023-12-01 15:47:50 25 4
gpt4 key购买 nike

简短而甜蜜的总结:

将类从 View 派生更改为 ViewGroup 派生时,传递给 onSizeChanged 的高度和/或宽度参数不一致对于我的类在 LinearLayout 内部使用时。使用 ViewGroup 作为父类(super class)时是否需要提供任何其他信息才能获得一致的结果?

长版:

我创建了一个自定义的派生 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(上面),否则当我直接从派生时,该布局 xml 会起作用查看。

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

最佳答案

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

关于java - Android自定义 View 布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6779857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com