【问题标题】:changing the position of ImageView dynamically in android在android中动态改变ImageView的位置
【发布时间】:2011-09-30 05:37:57
【问题描述】:

全部

我需要动态更改 ImageView 的位置,并使用以下代码进行操作

int x=100,y=100;
RelativeLayout.LayoutParams mparam = new RelativeLayout.LayoutParams((int)(LayoutParams.FILL_PARENT),(int)(LayoutParams.FILL_PARENT));
    mparam.topMargin=x;
    mparam.leftMargin=y;
    ball.setLayoutParams(mparam);
    x+=100;
    y+=100;

但我没有得到任何改变。

有可能吗?以及如何?

【问题讨论】:

    标签: android layoutparams


    【解决方案1】:

    您更改了边距,但没有更改其位置,这似乎不是一个好的解决方案。 尝试使用方法View.layout(int, int, int, int) Documentation 说:

    公共无效布局(int l,int t,int r,int b) 自:API 级别 1 为视图及其所有后代分配大小和位置 这是布局机制的第二阶段。 (首先是测量)。 在这个阶段,每个父级调用其所有子级的布局来定位它们。 这通常使用存储在 测量通过()。派生类不应覆盖此方法。衍生的 有孩子的类应该覆盖 onLayout。在那种方法中,他们应该调用 布局在他们的每个孩子身上。 参数 l 左侧位置,相对于父级 t 顶部位置,相对于父级 r 相对于父级的正确位置 b 底部位置,相对于父级

    【讨论】:

    • 同意@GrigoryKalabin 这是一个hack,但Grigory 的解决方案不起作用......这样称呼它:ball.layout(iLeft, iTop, iRight, iBottom);
    【解决方案2】:

    您可以在视图上调用 setPadding。所以,在你的代码中(顺便说一下,你应该把它放在一个代码块中!),只需添加对这个方法的调用:

    int x=100,y=100; 
    LayoutParams mparam = new LayoutParams((int)(LayoutParams.FILL_PARENT),(int) (LayoutParams.FILL_PARENT));
    ball.setLayoutParams(mparam); 
    ball.setPadding(x,y,0,0);
    
    x+=100; y+=100;
    ball.setPadding(x,y,0,0);
    

    【讨论】:

    • 啊,我在其他一些帖子中看到,setPadding 无法以某种方式工作.. 另一种可能性(我认为)是在将它们交给球后再次更改您的 LayoutParams,然后再将其交给球时间..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2014-09-13
    • 1970-01-01
    • 2011-12-03
    • 2016-11-14
    相关资源
    最近更新 更多