Android – creare TextView (o EditText) in modo programmato e impostarla in un luogo specifico sullo schermo, dando coordinate

Sto costruendo un'applicazione android where l'utente dipinge alcuni oggetti sullo schermo. Un tipo di object è un object di text. L'utente crea l'object trascinandolo e l'object viene mostrato come un rettangolo che può essere spostato / riformato. Quando l'utente tocca l'object di text, lancio una nuova attività in cui l'utente inserisce il text che restituisco sul metodo onActivityResult.

Ora voglio mostrare il text nell'object. Posso avere accesso alle cose come le coordinate del rettangolo ecc dalla mia class di text. Quello che voglio fare in sostanza è creare un programma TextView (o EditText) in modo programmato e impostare i suoi limiti come i limiti del mio rettangolo che il mio object è dipinto dentro. C'è un metodo che può aiutarmi a farlo?

  • Come get un ListView non scrollabile?
  • come avviare il servizio da frammenti
  • Come aggiungere id a public.xml?
  • Replica il pannello inferiore di Google Maps Swipe Up
  • Ottieni l'applicazione scelta da Intent.createChooser
  • Caricare il file in server php dal dispositivo android
  • (un altro approccio sarebbe quello di utilizzare il metodo canvas.drawTextOnPath nel mio object di text, ma questo sembra più complicato in quanto il mio text potrebbe uscire dall'object e dovrei anche gestire le multiline)

    Grazie mille in anticipo!

    EDIT: provare l'approccio di 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; } } 

    entrambe le stampe mostrano il text come previsto ma non vedo nulla sullo schermo (ho cercato di impostarlo in basso a sinistra per cominciare)

  • Il valore di tipo java.lang.String non può essere convertito in JSONObject su android
  • Modo autorevole per superare onMeasure ()?
  • greendao string key primari - come usare
  • Guida per scegliere tra AsyncTaskLoader e AsyncTask da utilizzare in Frammento
  • Questo layout RelativeLayout o il suo genitore LinearLayout è inutile
  • I-Jetty o Jetty
  • 3 Solutions collect form web for “Android – creare TextView (o EditText) in modo programmato e impostarla in un luogo specifico sullo schermo, dando coordinate”

    In realtà, drawTextOnPath è la tua scommessa migliore. Non sanguinerà. Tutto quello che wherete fare è creare un path che va da sinistra, centro verticale del rettangolo al centro verticale verticale. Il metodo si occuperà di ridimensionare il text in modo che rimanga all'interno del path.

    È ansible regolare il path in base a Paint.getTextWidth() . Se la width è più grande della casella, estendere il path con una linea Paint.getTextHeight() sotto la prima row.

      EditText edText = new EditText(this); edText .setId(i); edText .setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); edText .setWidth(100); edText .setImeOptions(EditorInfo.IME_ACTION_NEXT); edText .setInputType(InputType.TYPE_CLASS_NUMBER); edText .setKeyListener(DigitsKeyListener.getInstance()); edText .setMaxLines(1); edText .setOnFocusChangeListener(this); edText .setOnEditorActionListener(this); edText .addTextChangedListener(this); //this linearlayout id is declared inside your xml file LinearLayout linear=(LinearLayout)findViewById(R.id.linearLayout1); linear.addView(edText ); 

    Prova questo:

     TextView tv=new TextView(this); LayoutParams lp = new LayoutParams(new ViewGroup.MarginLayoutParams(width,height)); tv.setLayoutParams(lp); lp.setMargins(0, 0, 0, 0); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.