Android的 - 创建的TextView(或EditText上)编程和设置在屏幕坐标给出一个特定

2019-07-29 18:12发布

我建立一个Android应用程序,其中用户绘制在屏幕上的某些对象。 对象的一种类型是一个文本对象。 用户通过拖动他的手指创建该对象和该对象被示出为可以移动/再成形的矩形。 当用户点击文本对象,我启动其中用户输入文本时,我在onActivityResult方法返回一个新的活动。

现在我想以显示对象中的文本。 我可以有机会获得的东西,矩形等从我的文字类的坐标。 我想在本质上做的,是创建一个TextView(或EditText上)编程和设置它的边界为我的对象是在画我矩形的界限。是否有可以帮助我做到这一点的方法?

(另一种方法是使用canvas.drawTextOnPath方法在我的文本对象,但这似乎更复杂,因为我的文字可能会失去控制的对象,而我也必须处理多线)

非常感谢你提前!

编辑:尝试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;
      }
  }  

同时打印显示的文本预期,但我没有看到任何屏幕(试图将其设置在底部左边开始)

Answer 1:

其实, drawTextOnPath是你最好的选择。 它不会渗出。 所有你需要做的是创造的权利中心垂直,从左边走一段路,中心垂直的矩形。 该方法会照顾调整的文本,这样它会留在路径中。

您可以通过使用相应地调整路径Paint.getTextWidth() 如果宽度大于框大,延伸与线的路径Paint.getTextHeight()的第一行的下方。



Answer 2:

                    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 );


Answer 3:

试试这个:

TextView tv=new TextView(this);
LayoutParams lp = new LayoutParams(new ViewGroup.MarginLayoutParams(width,height));
tv.setLayoutParams(lp);
lp.setMargins(0, 0, 0, 0);


文章来源: Android - create TextView (or EditText) programmatically and set it in a specific place on the screen giving coordinates