Android - programowo utwórz TextView (lub EditText) i ustaw go w określonym miejscu na ekranie, podając współrzędne
Buduję aplikację dla systemu Android, w której użytkownik maluje niektóre obiekty na ekranie. Jeden typ obiektu to obiekt tekstowy. Użytkownik tworzy obiekt, przeciągając palcem, a obiekt jest wyświetlany jako prostokąt, który można przesuwać / zmieniać kształt. Gdy użytkownik stuka obiekt tekstowy, uruchamiam nowe działanie, w którym użytkownik wprowadza tekst, który zwracam w metodzie onActivityResult.
Teraz chcę pokazać tekst w obiekcie. Mogę mieć dostęp do rzeczy jako współrzędnych prostokąta itp. Z mojej klasy tekstu. W istocie chcę stworzyć programowo TextView (lub EditText) i ustawić jego granice jako granice mojego prostokąta, w którym jest malowany mój obiekt. Czy istnieje metoda, która może mi to pomóc?
(innym podejściem byłoby użycie metody canvas.drawTextOnPath w moim obiekcie tekstowym. Ale wydaje się to bardziej skomplikowane, ponieważ mój tekst może wydostać się z obiektu i musiałbym również obsługiwać multiliny)
Z góry bardzo dziękuję!
EDIT: wypróbowanie podejścia GAMA
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case 1:
if (resultCode == Activity.RESULT_OK) {
String text=data.getStringExtra("text");
System.out.println(text);
TextView tv=new TextView(this);
//LayoutParams lp = new LayoutParams(new ViewGroup.MarginLayoutParams((int)texts.get(index).width,(int)texts.get(index).height));
LayoutParams lp = new LayoutParams(new ViewGroup.MarginLayoutParams(100,100));
//tv.setLayoutParams(lp);
//lp.setMargins((int)texts.get(index).Sx, (int)texts.get(index).Sy, (int)texts.get(index).Lx, (int)texts.get(index).Ly);
tv.setLayoutParams(lp);
tv.setTextSize(10);
tv.setTextColor(Color.RED);
tv.setText(text);
lp.setMargins(0,0,0,0);
//tv.setVisibility(View.VISIBLE);
System.out.println("got "+tv.getText());
}
break;
}
}
oba wydruki pokazują tekst zgodnie z oczekiwaniami, ale nic nie widzę na ekranie (od początku próbowałem ustawić go w lewym dolnym rogu)