拖动时TextViews自动对齐

时间:2017-02-16 13:28:59

标签: java android xml

当我将文本视图拖动到屏幕的右侧时。它会自动对齐“居中”但我不想自动对齐文本视图。(如果我将TextView拖到右侧侧面,如果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 个答案:

没有答案