0

我正在 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;

    }

}
4

2 回答 2

1

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

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

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

希望这可以帮助。

于 2013-11-13T03:28:53.167 回答
0

你的问题是你正在设置

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

尝试摆脱这条线,因为它告诉布局它想要多宽。你希望它是动态的,这就是限制它。

如果您使用的是 XML 文件,这也会更容易。我建议在 XML 布局文件中构建相同的东西,并在动态创建它之前找到 EditText 需要什么设置来实现你想要的东西(只是因为布局文件可以很容易地拖动东西)。

于 2013-11-13T03:30:31.427 回答