【问题标题】:Android TextView: onClick after Moving TextViewAndroid TextView:移动TextView后的onClick
【发布时间】:2013-11-10 18:46:28
【问题描述】:

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

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

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

你如何解决这个问题?

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

【问题讨论】:

    标签: java android onclick textview


    【解决方案1】:

    我最近不得不这样做。您没有提供任何代码,因此必须这样做。关键是设置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);
    

    【讨论】:

      【解决方案2】:

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

      看看来自 Romain Guy 和 Chet Haase 的 this presentation

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

      【讨论】:

      • 非常感谢,这解释了问题。但是,我无法为我的 TextView 设置新位置(应用程序崩溃)。错误日志说明了我正在使用的 RelativeLayout。你是怎么做到的?
      • 当您以编程方式更改视图位置时,您必须设置 LayoutParams。但是布局参数必须是父视图。因此,如果您的 TextView 在 RelativeLayout 中,则必须将 TextView 设置为 RelativeLayout.LayoutParams。看看这个问题,也许你会更好地理解stackoverflow.com/questions/12909741/…我不确定这是不是问题,你可能应该粘贴整个错误日志。
      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2018-04-02
      • 1970-01-01
      • 2014-01-31
      相关资源
      最近更新 更多