2

我试图让我的textView对用户的点击做出反应。

我发现我实际上必须设置android:clickable="true",所以现在实际上调用了我的函数。

但我的问题是,我正在使用动画在我的活动中移动我的textView(从下到上)。所以现在只有当你点击我的textView曾经所在的位置时才会调用onClick函数,而不是它实际所在的位置。

你如何解决这个问题?

编辑: 不幸的是,我无法像第一个答案所暗示的那样以编程方式移动实际的TextView(我使用的是RelativeLayout )。但是,我可以用另一个 TextView(透明)覆盖我的 TextView 的位置,该 TextView 仅在动画结束时才可点击。完美运行。

4

2 回答 2

1

当您制作动画时,TextView 仅在视觉上移动(图形渲染表示仅在屏幕上移动),但真正的 TextView 对象保持在旧位置。您必须手动(以编程方式)将 TextView 移动到新位置。

看看Romain Guy 和 Chet Haase 的这个演示文稿

Chet Haase 将在 42:00 分钟讨论这个问题。如果您有时间,请查看整个演示文稿。他们在谈论一些非常有用的事情。

于 2013-10-31T09:03:28.557 回答
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);
于 2013-10-30T23:56:07.197 回答