我刚刚重新配置了一个以前工作的项目,以使用早期版本的android(2.2)......但却发现它不会编译如下行:
mybutton.setX(myfloatvalue);
抱怨“The method setX(float) is undefined for the type Button
”..所以我的问题是,我该怎么办呢?有近乎相同的吗?
答案 0 :(得分:4)
如果您不想使用TranslateAnimation
。使用Nine Old Androids库进行反向比赛:
ViewHelper.setX(button, xValue);
TranslateAnimation
后视图无法点击,因为只移动按钮的“精灵”,而不移动视图的边界和布局参数,即可点击区域。如果你点击旧位置它会调用听众,很奇怪吧?
您可能希望使用九个旧机器中的ObjectAnimator
将整个视图结构移动到您想要的位置,并且视图仍然可以点击。
或者,如果您不想使用外部库。将视图的左边距指定为onAnimationEnd()
中所需的x,然后再次点击您的视图。
答案 1 :(得分:2)
您应该调整按钮的布局参数,并确保按钮位于relativelayout中。对于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);
答案 2 :(得分:0)
要解决此问题,请使用持续时间为0的TranslateAnimation以及可以产生效果的参数。根据{{3}},它基本上是相同的。