2017-02-16 2 views
0

Когда я перетаскиваю текстовый вид на правую сторону . на экране. Автоматически выравнивается «в центре», но я не хочу автоматически выравнивать текстовое представление. (Если я перетаскиваю TextView вправо side end, если TextViews частично скрыты, это нормально для меня). Что делать?TextViews автоматически выравнивается при перетаскивании

Вот мой код

XML код:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linear" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

<TextView 
     android:id="@+id/tv1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:text="Test1" /> 


    <TextView 
     android:id="@+id/tv2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:text="Test2" /> 
</RelativeLayout> 

Java код:

public class TestActivity extends Activity { 

    int pressed_x,pressed_y,pressed_x1,pressed_y1; 
    TextView tv1,tv2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 

     tv1 = (TextView) findViewById(R.id.tv1); 
     tv2 = (TextView) findViewById(R.id.tv2); 

     tv1.setOnTouchListener(mOnTouchListenerTv1); 
     tv2.setOnTouchListener(mOnTouchListenerTv2); 
    } 

    public final View.OnTouchListener mOnTouchListenerTv1 = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams) tv1.getLayoutParams(); 


      switch (event.getActionMasked()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.d("TAG","@@@@ TV1 ACTION_UP"); 
        // Where the user started the drag 
        pressed_x = (int) event.getRawX(); 
        pressed_y = (int) event.getRawY(); 
        break; 

       case MotionEvent.ACTION_MOVE: 
        Log.d("TAG","@@@@ TV1 ACTION_UP"); 
        // Where the user's finger is during the drag 
        final int x = (int) event.getRawX(); 
        final int y = (int) event.getRawY(); 

        // Calculate change in x and change in y 
        int dx = x - pressed_x; 
        int dy = y - pressed_y; 

        // Update the margins 
        relativeLayoutParams.leftMargin += dx; 
        relativeLayoutParams.topMargin += dy; 
        tv1.setLayoutParams(relativeLayoutParams); 

        // Save where the user's finger was for the next ACTION_MOVE 
        pressed_x = x; 
        pressed_y = y; 
        break; 

       case MotionEvent.ACTION_UP: 
        Log.d("TAG","@@@@ TV1 ACTION_UP"); 

        break; 
      } 

      return true; 
     } 
    }; 
    public final View.OnTouchListener mOnTouchListenerTv2 = new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      RelativeLayout.LayoutParams relativeLayoutParams1 = (RelativeLayout.LayoutParams) tv2.getLayoutParams(); 

      switch (event.getActionMasked()) { 
       case MotionEvent.ACTION_DOWN: 
        Log.d("TAG","@@@@ TV2 ACTION_DOWN"); 
        // Where the user started the drag 
        pressed_x1 = (int) event.getRawX(); 
        pressed_y1 = (int) event.getRawY(); 
        break; 

       case MotionEvent.ACTION_MOVE: 
        Log.d("TAG","@@@@ TV2 ACTION_MOVE"); 
        // Where the user's finger is during the drag 
        final int x = (int) event.getRawX(); 
        final int y = (int) event.getRawY(); 

        // Calculate change in x and change in y 
        int dx = x - pressed_x1; 
        int dy = y - pressed_y1; 

        // Update the margins 
        relativeLayoutParams1.leftMargin += dx; 
        relativeLayoutParams1.topMargin += dy; 
        tv2.setLayoutParams(relativeLayoutParams1); 

        // Save where the user's finger was for the next ACTION_MOVE 
        pressed_x1 = x; 
        pressed_y1 = y; 
        break; 

       case MotionEvent.ACTION_UP: 
        Log.d("TAG","@@@@ TV2 ACTION_UP"); 
        break; 
      } 

      return true; 
     } 
    }; 
} 

ответ

0

Попробуйте выравнивания по правому краю

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linear" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tv1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:text="Test1" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 


    <TextView 
     android:id="@+id/tv2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:text="Test2" 
     android:layout_below="@+id/tv1" 
     android:layout_marginTop="34dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 
</RelativeLayout> 
+0

Ее не работает .. Я наклоняюсь перетащите где-нибудь, когда я использую params "align_parent top или справа или внизу " –

+0

Может ли U быть более конкретным, что именно нужно U? –

+0

Я хочу переместить текст в любом месте на экране без автоматического выравнивания. –

Смежные вопросы