Я создал макет, который содержит кнопку и текст редактирования.После ввода текста и нажатия кнопки текст будет преобразован в текстовое представление и будет добавлен в макет динамически.Теперь я хочу, чтобы эти динамически созданные текстовые представления перетаскивались по макету. Я попробовал способ, но я могу перетащить только текстовое представление, которое дано в файле 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>