我正在创建一个应用程序,我想在运行时更改我的图像位置(imageview)。我无法做到。我正在使用线性布局。请任何人都可以给我特定的代码。
我尝试了以下代码(来自stackoverflow),但是dint工作:
ImageView leaf = (ImageView)findViewById(R.id.imageView1);
LayoutParams par = leaf.getLayoutParams();
par.leftMargin += 30;
leaf.setLayoutParams(par);
没有名为setLayoutParams()
的方法答案 0 :(得分:1)
您可以使用TranslateAnimation
(fillAfter设置为true - 请参阅示例)。根据您是否需要任何延迟,将延迟时间设置为0,或者如果您想要将其设置为动画,请将其设置得更高。
答案 1 :(得分:1)
如果你必须使用绝对(你不应该),并且你必须在运行时移动一些东西,你可以制作第二个ImageView并在代码中选择使用哪个:
我有一个小小的卡通角色需要一直在屏幕的底部 - 他的一个动画是跳出菜单的方式(在他不在的地方的设备上看起来很傻)。
代码根据设备返回的屏幕分辨率选择要使用的ImageView。它不优雅,但它确实有效,只要你注意命名等应该是安全的。
*注意:到目前为止,在我的测试中,只要每个ImageView没有在带有'src'图像的xml中初始化,在你给它们分配东西之前都不会看到它们(所以不用担心如何处理其他一个)。
答案 2 :(得分:0)
如果您想仅移动图像视图直到下一个布局通过,请使用
ImageView leaf = (ImageView)findViewById(R.id.imageView1);
leaf.offsetLeftAndRight(30);
否则会像其他人建议的那样创建新的布局参数。
答案 3 :(得分:0)
肯定有一种名为
的方法android.view.View.setLayoutParams(LayoutParams params)
你必须在这里遇到其他一些问题。我刚刚为我的一个ImageView测试了它,并且能够在运行时更改图像的大小。
答案 4 :(得分:-2)
在修改之前,您需要创建一个新的LayoutParams。我不知道为什么,但它对我有用:
params = new RelativeLayout.LayoutParams(leaf.getLayoutParams());
par.leftMargin += 30;
leaf.setLayoutParams(params);