ChatGPT解决这个技术问题 Extra ChatGPT

在 Android 的 EditText 视图中允许多行吗?

如何在 Android 的 EditText 视图中允许多行?


L
Leonardo Sibela

默认情况下,Android 中的所有 EditText 小部件都是多行的。

这是一些示例代码:

<EditText
    android:inputType="textMultiLine" <!-- Multiline input -->
    android:lines="8" <!-- Total Lines prior display -->
    android:minLines="6" <!-- Minimum lines -->
    android:gravity="top|start" <!-- Cursor Position -->
    android:maxLines="10" <!-- Maximum Lines -->
    android:layout_height="wrap_content" <!-- Height determined by content -->
    android:layout_width="match_parent" <!-- Fill entire width -->
    android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>

有没有办法将 inputType 设置为 textMultiLine 并将 imeOptions 设置为 actionSend?当我将 inputType 设置为 textMultiLine 并将 imeOptions 设置为 actionSend 时,我在 S4 键盘上看到了 Enter 键而不是发送。
对于“textMultiLine 和 imeOptions”,请参阅 stackoverflow.com/questions/5014219/…
需要注意的一点是,添加 inputType 至少会否定 linesminLines 属性。我有 inputType="phone" 并且 lines 属性没有效果
不要使用这个。由于 android:inputType="textMultiLine",您一键入内容就会导致 IndexOutOfBoundsException
如果使用 AppCompactTextView 需要这一行 android:inputType="textMultiLine"
A
AskNilesh

您可能会发现使用它更好:

<EditText 
...
android:inputType="textMultiLine"
/>

这是因为 android:singleLine 已被弃用。


Sharduls 的答案当然应该适用于现代 API。因为他们删除了答案中已弃用的 singleLine 部分(很久以前)。关于问题本身,这是他们回答中最重要的部分。
不要使用这个。键入内容后立即导致 IndexOutOfBoundsException。多行现在是默认设置。
@Chisko XML 属性不会导致 IndexOutOfBoundsException。我不记得默认 inputType 何时更改(甚至是吗?),但出于向后兼容性的原因,最好保留它。
@Knossos 好,对你来说很奇怪,对我来说也是如此。我从字面上复制粘贴了代码,并且每次都使用几个参数的每种可能组合崩溃,直到我删除它。去搞清楚。
D
DaveNOTDavid

这对我有用,实际上这两个属性很重要:inputType 和 lines。此外,您可能需要一个滚动条,下面的代码显示了如何制作一个:

 <EditText
        android:id="@+id/addr_edittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="top|left"
        android:inputType="textEmailAddress|textMultiLine"
        android:lines="20"
        android:minLines="5"
        android:scrollHorizontally="false"
        android:scrollbars="vertical" />

4
4 revs, 3 users 68%

这就是我应用下面的代码片段的方式,它工作正常。希望,这会对某人有所帮助。

<EditText 
    android:id="@+id/EditText02"
    android:gravity="top|left" 
    android:inputType="textMultiLine"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:lines="5" 
    android:scrollHorizontally="false" 
/>

干杯! ...谢谢。


m
milan

EditText 具有 singleLine 属性。您可以在 XML 中设置或通过调用 setSingleLine(false); http://developer.android.com/reference/android/widget/TextView.html#setSingleLine%28%29


m
michoprogrammer

试试这个,将这些行添加到您的编辑文本视图中,我会添加我的。确保你理解它

android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"

<EditText
    android:inputType="textMultiLine"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/editText_newprom_description"
    android:padding="10dp"
    android:lines="5"
    android:overScrollMode="always"
    android:scrollbarStyle="insideInset"
    android:minLines="5"
    android:gravity="top|left"
    android:scrollbars="vertical"
    android:layout_marginBottom="20dp"/>

并在你的java类上点击listner到这个编辑文本,如下所示,我会根据你的添加我的,chane名称。

EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);

description.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {

                view.getParent().requestDisallowInterceptTouchEvent(true);
                switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
                    case MotionEvent.ACTION_UP:
                        view.getParent().requestDisallowInterceptTouchEvent(false);
                        break;
                }

                return false;
            }

        });

这对我来说很好


谢谢!这就是我在可滚动视图中使编辑文本可滚动的方式。
Y
Yıldırım
android:inputType="textMultiLine"

这条代码行对我有用。在您的 xml 文件中添加您编辑文本的代码。


C
Cynichniy Bandera

所有这些都很好,但如果您的编辑文本位于上层滚动视图中,则这些都不起作用:) 最常见的示例可能是“设置”视图,它有很多项目,以至于超出了可见区域。在这种情况下,您将它们全部放入滚动视图以使设置可滚动。如果您在设置中需要多行可滚动编辑文本,则其滚动将不起作用。


O
Oleg Bozhko

要禁用先前在主题中分配的行数,请使用 xml 属性:android:lines="@null"


Y
Yogesh Sarvaiya
 <EditText
           android:id="@id/editText" //id of editText
           android:gravity="start"   // Where to start Typing
           android:inputType="textMultiLine" // multiline
           android:imeOptions="actionDone" // Keyboard done button
           android:minLines="5" // Min Line of editText
           android:hint="@string/Enter Data" // Hint in editText
           android:layout_width="match_parent" //width editText
           android:layout_height="wrap_content" //height editText
           /> 

D
Dinith

只需将此 android:inputType="textMultiLine" 添加到相关字段的 XML 文件中。


s
sourav pandit

如果有人使用 AppCompatEditText 那么你需要设置 inputType="textMultiLine" 这是你可以复制的代码

   <androidx.appcompat.widget.AppCompatEditText
        android:padding="@dimen/_8sdp"
        android:id="@+id/etNote"
        android:minLines="6"
        android:singleLine="false"
        android:lines="8"
        android:scrollbars="vertical"
        android:background="@drawable/rounded_border"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/_25sdp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="@dimen/_25sdp"
        android:autofillHints=""

        android:gravity="start|top"
        android:inputType="textMultiLine"
         />

背景

   <?xml version="1.0" encoding="utf-8"?>
   <shape android:shape="rectangle" 
    xmlns:android="http://schemas.android.com/apk/res/android">
   <corners android:radius="@dimen/_5sdp"/>
   <stroke android:width="1dp" android:color="#C8C8C8"/>
   </shape>

A
Allison

我从 http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ 学到了这一点,虽然我自己不喜欢这个网站。如果您想要多行但想要保留回车按钮作为发布按钮,请将列表视图的“水平滚动”设置为 false。

android:scrollHorizontally="false"

如果它在 xml 中不起作用,那么以编程方式执行它会很奇怪。

listView.setHorizontallyScrolling(false);


i
instanceof

另一件巧妙的事情是将 android:minHeightandroid:layout_height="wrap_content" 一起使用。这样,您可以在编辑为空时设置编辑的大小,并且当用户输入内容时,它会根据用户输入的数量(包括多行)进行拉伸。


K
Kapil Parmar
<EditText
                android:hint="Address"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:inputType="textMultiLine|textNoSuggestions"
                android:id="@+id/edittxtAddress"
                android:layout_marginLeft="@dimen/textsize2"
                android:textColor="@android:color/white"
                android:scrollbars="vertical"
                android:minLines="2"
            android:textStyle="normal" />

并且在 Activity 中删除“\n”是用户按下下一行

String editStr= edittxtAddress.getText().toString().trim();

 MyString= editStr.replaceAll("\n"," ");