2

我刚刚重新配置了一个以前工作的项目以使用早期版本的 android (2.2) ......只是发现它不会编译如下行:

mybutton.setX(myfloatvalue);

抱怨“ The method setX(float) is undefined for the type Button”..所以我的问题是,我能做些什么呢?有没有类似的?

4

3 回答 3

4

如果您不想使用TranslateAnimation. 使用九个旧 Android 库进行向后兼容:

ViewHelper.setX(button, xValue);

之后视图不可点击,TranslateAnimation因为只有按钮的“精灵”被移动,而不是视图的边界和布局参数,即可点击区域。如果您单击旧位置,它会呼叫侦听器,很奇怪吧?

您可能想使用ObjectAnimator九个旧机器人将整个视图结构移动到您想要的位置,并且仍然可以单击视图。

或者,如果您不想使用外部库。将视图的左边距分配给所需的 x inonAnimationEnd()并让您的视图再次可点击。

于 2013-10-19T19:13:36.523 回答
2

您应该调整按钮的布局参数,并确保按钮处于相对布局中。对于 setX,将布局参数右边距设置为 myFloatValue。这是一个简单的例子:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);
于 2013-10-19T19:16:58.583 回答
0

setX在 api 11及更高版本中可用。

要解决这个问题,请使用持续时间为 0 的 TranslateAnimation 和可以产生效果的参数。根据setX 的文档,它本质上是一回事。

于 2013-10-09T14:02:53.050 回答