编辑框未自适应内容

8

我正在尝试创建一个可在只读模式和写入模式之间切换的EditText。

我的XML如下所示:

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/textArea" 
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" 
 android:lines="4"
 android:inputType="textMultiLine">
</EditText>

我的代码是这样的:

textArea = (EditText) convertView.findViewById(com.pravaa.mobile.R.id.textArea);
  //isEditable decides if the EditText is editable or not
 if(!isEditable){
        textArea.setInputType(InputType.TYPE_NULL);
  }
  //the view is added to a linear layout. 
  addView(textArea);

我的问题是文本没有换行。我是否遗漏了什么?请帮助我解决这个问题。我还附上了我的输出图像。
该视图中设置的文本为“12345678901234567 90123456789012345678901234567890 Nationwide Campaign New”。 EditText does not exapnd in height The text does not wrap
8个回答

9
我通过删除解决了这个问题。
 android:inputType="textMultiLine"

为了实现不可编辑的功能,我使用了
 setFocusable(false);

为什么你不会使用 setEnabled(false); 呢? - Bugs Happen

9

I guess that by calling this ...

textArea.setInputType(InputType.TYPE_NULL);

您可以覆盖标志InputType.TYPE_TEXT_FLAG_MULTI_LINE。尝试调用以下内容...

textArea.setInputType(InputType.TYPE_NULL|InputType.TYPE_TEXT_FLAG_MULTI_LINE);

很奇怪。你确定没有改变EditText的其他任何内容吗?这是我尝试的方法。 <EditText android:id="@+id/editText" android:inputType="textMultiLine" android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="4" android:text="..." /> 在代码中,我只是使用了 editText.setFocusable(false); - taymless
谢谢你。我已经把它弄好了。现在为了让该字段可编辑,我尝试设置setFocusable(true);但当我点击相应的字段时,我无法直接输入文本。只有当我使用鼠标滚动时才能输入到该字段中。请帮我解决这个问题。 - S.A.Norton Stanley
我不知道你的意思是什么。这是否意味着光标没有处于正确位置,需要使用轨迹球进行更改?还是说你无法通过触摸输入与EditText进行交互? - taymless
我无法通过触摸输入与EditText进行交互。我通过使用setFocusableInTouchMode(true)解决了这个问题。谢谢。 - S.A.Norton Stanley
你需要将TYPE_NULL替换为TYPE_CLASS_TEXT,否则它无法工作。 - Yevgeny Simkin
显示剩余2条评论

1
这行代码会使文本变成多行,并自动换行。
textArea.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);

您可能还想调用setLines(n)来设置文本区域的高度。

这个方法(我尝试了所有其他的解决方案,但它们都没有起作用)对我有用。 - Yevgeny Simkin

1

Try to replace:

editText.setInputType(InputType.TYPE_NULL);

使用:

editText.setRawInputType(InputType.TYPE_NULL);

这是唯一一个有些意义的答案。 - natario

0

我会说,通过使用 textArea.setInputType(InputType.TYPE_NULL); 你可以从你的 XML 中移除 textMultiLine


0

仅设置textMultiLine是不够的。尝试这样做:

textArea.setHorizontallyScrolling(false);
textArea.setEllipsize(null);
textArea.setInputType(InputType.TYPE_NULL|InputType.TYPE_TEXT_FLAG_MULTI_LINE);

它仍然给我相同的行为.. :-( 可能是布局引起的问题吗? - S.A.Norton Stanley

0

对我有帮助的是:

edtText.setInputType(InputType.TYPE_NULL);
edtText.setSingleLine(false);

看起来XML文件中的setSingleline属性被忽略了。


0

添加android:inputType="textMultiLine"是使它对我起作用的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接