Как перетащить динамически созданное текстовое представление в макете - PullRequest
0 голосов
/ 17 февраля 2019

Я создал макет, который содержит кнопку и текст редактирования.После ввода текста и нажатия кнопки текст будет преобразован в текстовое представление и будет добавлен в макет динамически.Теперь я хочу, чтобы эти динамически созданные текстовые представления перетаскивались по макету. Я попробовал способ, но я могу перетащить только текстовое представление, которое дано в файле XML, но не динамически созданные текстовые представления.Так как я могу их перетащить.Ниже мой код, который я пробовал

   public class MainActivity extends AppCompatActivity {
    private ImageView image;
    private Button button;
    private EditText editText;
    private ViewGroup layout;
    private RelativeLayout relativeLayout;
    private int id =1;
    private TextView text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = (LinearLayout) findViewById(R.id.root);
        relativeLayout = (RelativeLayout)findViewById(R.id.root2);
        image = (ImageView) findViewById(R.id.image);
        button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.editText);
        text = (TextView)findViewById(R.id.textView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (editText.getText().toString().length() != 0) {

                    RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(
                            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                    TextView tv = new TextView(MainActivity.this);
                    tv.setLayoutParams(lparams);
                    tv.setId(id);
                    id+=1;
                    tv.setText(editText.getText());
                    relativeLayout.addView(tv);
                    relativeLayout.invalidate();
                }
            }
        });

        for (int i = 0; i < relativeLayout.getChildCount(); i++) {
            relativeLayout.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    float x = event.getX();
                    float y = event.getY();
                    if (event.getAction() == MotionEvent.ACTION_MOVE)
                    {
                        if(v instanceof TextView) {
                            v.setX(x);
                            v.setY(y);
                        }
                    }
                    if(event.getAction()==MotionEvent.ACTION_DOWN)
                    {
                        if(v instanceof TextView)
                        {
                            v.setX(100);
                            v.setY(200);
                            }
                    }
                    return true;
                }
            });


        }

    }
}

, и это мой xml

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:id="@+id/root"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:text="hii"/>

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="0dp"
            android:layout_marginTop="46dp"
            tools:layout_editor_absoluteX="16dp"
            tools:layout_editor_absoluteY="87dp" />
    </RelativeLayout>

    <RelativeLayout

        android:id="@+id/root2"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/image"
            android:layout_width="50dp"
            android:layout_height="50dp"

            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="152dp"
            android:layout_marginTop="140dp"
            android:src="@drawable/pp" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_marginStart="114dp"
            android:layout_marginTop="93dp"
            android:text="SASIDHAR MUPPALA" />
    </RelativeLayout>

</LinearLayout>
...