【问题标题】:How to set width and height for custom view in programmatically?如何以编程方式设置自定义视图的宽度和高度?
【发布时间】:2012-01-23 09:22:50
【问题描述】:

我创建了一个名为 MyDraw 的自定义视图,这是我的 MyDraw 代码,

public class MyDraw extends View {


    public MyDraw(Context context) {
        super(context);

    }

    public MyDraw(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

    }

    public MyDraw(Context context, AttributeSet attrs) {
        super(context, attrs);

    }
         ........................................
}

我已经使用包名在 XML 文件中添加了视图。它工作正常。现在我想在运行时为 MyDraw 设置高度和宽度,因为我使用了以下代码,

mMyDraw.setLayoutParams(new LayoutParams(220, 300));

但我得到了类似的异常,

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams

如何解决这个异常? 请帮帮我..

【问题讨论】:

标签: android android-layout classcastexception


【解决方案1】:

您必须覆盖视图的 onMeasure() 方法。

你可以在这里查看一个很好的例子:http://kahdev.wordpress.com/2008/09/13/making-a-custom-android-button-using-a-custom-view/

我推荐的一个非常酷的视频在这里:http://marakana.com/forums/android/general/563.html

希望这会有所帮助!

【讨论】:

  • 这不是和我一样的答案吗?您是否认为添加其他链接会使答案有所不同?
  • 开始写答案时,你还没有回答。如果我删除答案你感觉更好,我没有问题。在任何情况下,用户都可以为您的答案投票。
  • 如果您认为不需要删除答案,我没问题。事实上很多时候我都面临同样的事情(有人在我写同样的事情时回答了):)
  • 添加额外的链接确实有帮助。看看票数:)
【解决方案2】:

重写onMeasure()方法,看看here

【讨论】:

    【解决方案3】:

    有一个简单的方法: 基于我们的自定义视图父类,我们可以使用布局参数。

    例如,如果我们的自定义视图是从 FrameLayout 扩展而来的:

    FrameLayout.LayoutParams params = (LayoutParams) findViewById(R.id.root).getLayoutParams();
    params.width = newwidth;
    params.height = newHeight;
    setLayoutParams(params);
    

    其中“R.id.root”是 custom_view.xml 中根视图的 id,在本例中为 FrameLayout。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 2021-08-12
      • 2011-03-09
      • 1970-01-01
      相关资源
      最近更新 更多