我正在尝试让 textView 对用户点击做出反应。
我发现我实际上必须设置android:clickable="true"
,所以我的函数实际上是现在调用的。
但我的问题是,我正在使用动画在我的活动中移动 textView (从下到上)。所以现在只有当你点击 textView 过去的位置时,才会调用 onClick 函数,而不是实际的位置。
你如何解决这个问题?
修改 不幸的是,我无法以编程方式移动实际的 TextView (我正在使用 RelativeLayout ),就像第一个答案所示。 但是,我可以使用另一个TextView(透明)覆盖我的TextView的位置,只有在动画结束时才可以单击。 效果很好。
答案 0 :(得分:1)
当您进行动画制作时,TextView仅被视觉移动(图形渲染表示仅在屏幕上移动),但真正的TextView对象保持在旧位置。您必须手动(以编程方式)将TextView移动到新位置。
看看Romain Guy和Chet Haase的this presentation。
Chet Haase在42:00分钟正在解决这个问题。如果你有时间,看看整个演示文稿。他们正在讨论一些非常有用的事情。
答案 1 :(得分:0)
我最近不得不这样做。您没有提供任何代码,因此必须这样做。关键是设置bottomMargins来补偿。
Animation yourAnimation = AnimationUtils.loadAnimation(getActivity().getApplicationContext(), R.anim.your_anim_file);
slideOutBottom.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
animatedButton.clearAnimation();
Resources r = view.getResources();
int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, -68, r.getDisplayMetrics());
lp = (LinearLayout.LayoutParams) animatedButton.getLayoutParams();
lp.bottomMargin = -50;
cartFunctionButtons.setLayoutParams(lp);
}
});
yourAnimation.setFillAfter(true);
animatedButton.startAnimation(yourAnimation);