java - Android自定义 View 布局问题

标签 java android layout user-interface

简短而甜蜜的总结:

将类从 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/

相关文章:

java - 使用 Java 和 OAuth 2.0 连接到 Google 通讯录

android - 在Android中将位置转换为六十进制?

android - 如何将editText宽度设置为一个字符

java - 如何在 JPanel 中为长 JComponent 添加滚动条?如何使 JComponent 居中?

java - 由于使用 java8 lambdas 时出现无效类型异常,Flink 无法运行我的应用程序

java - 在 Android 手机上计算圆周率

java - 向空 Activity 添加菜单

android - 图库安卓 :unselectedAlpha

android - 适用于 Android 的 Facebook SDK 3.7 请求电子邮件权限

html - 行在 Bootstrap 中被长列压低