EditText上不会换它的文本(EditText won't wrap its text)

2019-09-17 06:45发布

我知道有很多的相关#1的问题,但我想这样做是写在其中任何一个,到目前为止,我无法得到这个工作的一切。

我的问题很简单。 我有一个Android应用程序,我有一个框,用户将输入文本。 不过,我不希望这样的文本设置为多(它不应该有它的“\ n”),但我想它来包装,如果行的大小大于视域更大。 所以基本上,我要的是相同的行为在Gmail主题字段文本框了。

这是我的整个观点:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/question"
        android:textAppearance="@style/titleFont"/>

<EditText
    android:id="@+id/edit_question_value"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.3"
    android:gravity="top"
    android:inputType="textImeMultiLine|textEmailSubject"
    android:maxLength="70"
        >

</EditText>

<TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/answer"
        android:textAppearance="@style/titleFont"/>

<EditText
        android:id="@+id/edit_question_answer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:gravity="top"
        android:layout_weight="0.7"
        android:inputType="textMultiLine"/>

<LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal">

    <Button
            android:id="@+id/save_question"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.5"
            android:text="@string/save"/>

    <Button
            android:id="@+id/cancel_edit_question"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="@string/cancel"/>
</LinearLayout>

我想有这种行为的文字是theone与ID等于@ + ID / edit_question_value。 到目前为止,我已经能够要么使之真正多(所以用户可以键入如果他想进入)或单行和文本不会换行。 也许有些围绕文本的元素都具有一定的干扰,这就是为什么我包括整个视图。

没有人知道发生了什么事?

Answer 1:

这是东西已经有很多人之前困扰,当我需要它,我无法找到答案。 在纯XML,那是。 如果我们可以用编程并不仅仅是标记,我们可以,如果你可以用一个小黑客做到这一点。 基本上,我们宣布一个多EDITTEXT然后捕捉返回键,以避免新的生产线。

首先声明的XML:

<EditText
    android:id="@+id/noReturnEditText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:imeOptions="actionDone"
    android:inputType="textMultiLine|textCapSentences"
    android:text="lorem ipsum \n dolor site amet helping stackoverflow" />

是的,我知道你在想什么“但是,嘿, 胡安这是一个多线性EditText ,我想一个衬垫像在Gmail的主题区”。 我知道,我知道,但我们要照顾它,现在,通过删除不想要的多部分的行为,同时保持我们所需的文字环绕。

代码现在休息:

EditText noReturnEditText = (EditText) findViewById(R.id.noReturnEditText);
         noReturnEditText.setOnKeyListener(new OnKeyListener(){
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_ENTER) return true;
                return false;
            }
        });

你也许可以读取的代码很容易,但如果有人需要一个解释,我们设置了OnKeyListenerEditText我们要成为“ONELINE-multilinelike”,如果用户按下回车键(KEYCODE_ENTER)我们告诉该事件不通过返回传播true在这种情况下意味着我们已经处理该事件。

结果:

注意事项

按返回键,是不是进入一个新行的唯一途径。 用户可以复制/粘贴一些文字,并与一个单行的EditText多行条目结束。 别担心! 之前我们储存或用类似使用它我们可以剥离值

myData = rawText.replace(System.getProperty("line.separator"), " ");

如果我有很多EditText看法?

好了,你基本上有两种选择。 做一个接一个,拉你的眼睛做这样的事情,其上市的意见和循环为每个视图。

//Declare the reusable listener
  OnKeyListener myListener = new OnKeyListener(){
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_ENTER) return true;
            return false;
        }
    }  
//Loop through the views
    int viewIds[] = {R.id.edittext1,R.id.edittext2,R.id.edittext3,R.id.edittext4};
    for(int id : viewIds) ((EditText)findViewById).setOnKeyListener(myListener);


Answer 2:

<EditText
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@color/color_red"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:gravity="top|left"
            android:inputType="textMultiLine|textCapSentences"
            android:lines="10"
            android:maxWidth="200dp"
            android:maxLength="200"
            android:maxLines="10"
            android:singleLine="false"
            android:textColor="@android:color/white"
            android:textSize="26sp" />

尝试这个。 工作对我来说,当我改变重力顶部|左



文章来源: EditText won't wrap its text