在editText中自动设置宽度和高度

时间:2013-11-13 03:21:46

标签: android

我正在android上创建一个可拖动的EditText。我把我的editText放在一个相对布局上,我的问题是每当我输入一个长文本它就会转到第二行,即使它没有在相对布局中填充。

这是我的示例布局:

+----------------------------------------------------+
|                                                    |
|             +----------------+                     |
|             | This is my text|                     |
|             | in editText    |                     |
|             +----------------+                     |
|                                                    |
|                                                    |
|                                                    |
+----------------------------------------------------+ 

这就是我想要实现的目标:

+----------------------------------------------------+
|                                                    |
|             +----------------------------+         |
|             | This is my text in editText|         |
|             +----------------------------+         |
|                                                    |
|                                                    |
|                                                    |
|                                                    |
+----------------------------------------------------+ 

我希望在转到第二行之前先将整个布局(宽度)中的文本换行。

这是我的代码:

 class AddTextTouchListener implements OnClickListener
{

    @Override
    public void onClick(View view) {

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.imgstage);
      Context context = getApplicationContext();
      EditText imv=new EditText(context);
      imv.setText("Sample");
      imv.setTextColor(Color.BLACK);
      imv.setBackgroundColor(Color.TRANSPARENT);
      imv.setCursorVisible(false);
      imv.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
      imv.setOnLongClickListener(new longClickTextListener());
      imv.setEms(10);
      imv.setMaxLines(4);
      imv.setHorizontallyScrolling(false);
      LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
      imv.setLayoutParams(params);
      layout.addView(imv);

    }
}

这是我的longClickListener能够拖动editText:

class longClickTextListener implements OnLongClickListener
{

    @Override
    public boolean onLongClick(View view) {

        ClipData data = ClipData.newPlainText("", "");
        DragShadowBuilder shadowBuilder = new DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view, 0);
        view.setVisibility(View.VISIBLE);
        lastImageSelected = view;

        return true;

    }

}

2 个答案:

答案 0 :(得分:1)

我的建议是计算编辑文本放置位置的屏幕右侧有多少空间,然后将其设置为编辑文本的宽度。

所以,例如,你想要做这样的事情:

LayoutParams params = new LayoutParams(screenWidth - editTextLeftMargin, LayoutParams.WRAP_CONTENT);

希望这有帮助。

答案 1 :(得分:0)

您的问题是您正在设置

imv.setEms(10); //this sets the width of the EditText remove it

尝试摆脱这一行,因为它告诉布局它想要的宽度。你希望它是动态的,这限制了它。

如果您使用XML文件,这也会更容易。我建议在XML布局文件中构建相同的东西,并找到EditText在动态创建之前需要提取什么设置(仅仅因为布局文件可以轻松拖动内容)。