2017-05-04 70 views
0

你好堆棧社區,Android設置文本位置永久不起作用

我想改變文本視圖的位置。

我已經嘗試了幾種方法,但是對於他們來說,視圖位置被設置回原來的位置。

我嘗試的方式,

// 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事件使用動畫功能,例如。 someText.animate().x(newPositionX).y(newPositionY).setDuration(0).start();

它沒有設置爲原始座標,更改是永久性的。這是我想要的,但我想這樣做,沒有觸摸事件,即使用其他事件的代碼的其他部分。

我的問題是

  1. 爲什麼當我使用onTouch事件雖然是暫時的,當我不使用onTouch事件的變化是永久的嗎?
  2. 我該如何實現永久設置文本位置?

最後我的XML是像這樣的TextView

`<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 " />` 

回答

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)表示視圖的左側,頂部,右側,底部。

我希望它可以幫助其他面臨同樣問題的人。

但是我仍然沒有回答我的第一個問題。如果有人知道並告訴,我會非常感激。