【问题标题】:use setLayoutParams() but it doesn't work使用 setLayoutParams() 但它不起作用
【发布时间】:2011-12-17 13:30:34
【问题描述】:

我创建了一个自定义视图-MyImageView-在其中绘制位图,我使用 setLayoutParams() 来设置我的视图的宽度和高度,但它不起作用,我使用日志来跟踪我的视图的宽度和高度,我发现都是0,为什么宽高不是300?这是我的主要活动代码的一部分:

    myCanvas=new MyImageView(CanvasTest3Activity.this,Path);
    LinearLayout.LayoutParams p=new LinearLayout.LayoutParams(300,300);
    myCanvas.setLayoutParams(p);

这是我的 MyImageView 代码的一部分:

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int parentwidth=MeasureSpec.getSize(widthMeasureSpec);
    int parentHeight=MeasureSpec.getSize(heightMeasureSpec);
    int mywidth=(int)(parentHeight*0.5);
    setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),mywidth);
    }

【问题讨论】:

    标签: android custom-view layoutparams


    【解决方案1】:

    您需要获取父视图并使用 add 方法添加您的视图 + 您的视图参数。比如:

    “ParentViewInstance.add(this_is_my_child_view, this_is_the_layout_params_for_my_child_view)”

    这意味着您的子视图的 LayoutParams 的类型应该与 ParentView LayoutParams 的类型相同。看看这个answers 的代码示例。

    【讨论】:

    • 线性布局布局=新线性布局(这个); ...layout.addView(myCanvas,p);但最后在我的屏幕上出现了两个视图...我想问一下,如果我使用 addview 方法,我是否也应该在 xml 中添加视图?
    • 如果你的视图是通过编程方式创建的,你不必在xml布局中添加它(你只需要提前想好,如何将它包含在已经存在的布局中)。
    猜你喜欢
    • 2011-08-02
    • 2014-01-31
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多