Android设置文本位置永久不起作用

时间:2017-05-04 13:29:37

标签: android textview

Hello Stack社区,

我想更改文字视图的位置。

我尝试了几种方法,但对于所有这些方法,视图位置都设置回原始位置。

我尝试的方式,

    // 1. way
    someText.setX(newPositionX);
    someText.setY(newPositionY);

    // 2.way
    someText.x(newPositionX).y(newPositionY).setDuration(0).start();

    // 3.way
   someText.animate().x(newPositionX).y(newPositionY).setDuration(0).start();

    //4.way
    ObjectAnimator objectAnimatorX= ObjectAnimator.ofFloat(someText, "translationX", oldPositionX, newPositionX);
    ObjectAnimator objectAnimatorY= ObjectAnimator.ofFloat(someText, "translationY", oldPositionY, newPositionY);
    objectAnimatorX.setDuration(0);
    objectAnimatorX.start();
    objectAnimatorY.setDuration(0);
    objectAnimatorY.start();

    // 5.way
    ObjectAnimator animX = ObjectAnimator.ofFloat(someText, "x", newPositionX);
    ObjectAnimator animY = ObjectAnimator.ofFloat(someText, "y", newPositionY);
    AnimatorSet animSetXY = new AnimatorSet();
    animSetXY.playTogether(animX, animY);
    animSetXY.start();

对于所有这些方式,它将重置为原始位置。

然而,当我在onTouch事件中使用animate函数时,例如。 someText.animate().x(newPositionX).y(newPositionY).setDuration(0).start();

它没有设置为原始坐标,更改是永久性的。这是我想要的,但我想这样做,没有触摸事件,即使用其他一些事件的代码的其他部分。

我的问题是

  1. 当我使用onTouch事件时为什么更改是永久性的,而当我不使用onTouch事件时它是暂时的?
  2. 如何永久设置文字位置?
  3. 最后,对于textView

    ,我的xml是这样的
        `<TextView
        android:id="@+id/latinBigTextView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="20dp"
    
        android:background="@drawable/border_text"
        android:text="Initial text " />`
    

1 个答案:

答案 0 :(得分:0)

不知怎的,我已经修好了。我还没有得到最好的结果,但它永久更新。很可能是因为我的计算,但现在似乎位置更新仍然存在。我使用了以下代码:

    TranslateAnimation anim = new TranslateAnimation(0, deltaX, 0, deltaY);
    anim.setDuration(0);
    anim.setFillAfter(true);
    anim.setFillEnabled(true);
    anim.setAnimationListener(new Animation.AnimationListener()
    {
        @Override
        public void onAnimationStart(Animation animation)
        {
        }
        @Override
        public void onAnimationEnd(Animation animation)
        {
            int l = newPosX;
            int t = newPosY;
            int r = SomeText.getWidth() + newPosX;
            int b = SomeText.getHeight() + newPosY;
            latinText.layout(l, t, r, b);
        }
        @Override
        public void onAnimationRepeat(Animation animation)
        {
        }
    });
    latinText.startAnimation(anim);

SomeText是我想要永久和动态移动的textView。 DeltaX和DeltaY是我想要移动的像素数量。 (l,r,t,b)表示视图的(左,上,右,下)。

我希望它可以帮助其他遇到同样问题的人。

但是我的第一个问题仍然没有答案。如果有人知道并告诉我,我将非常感激。