如何让Android的EditText默认粘贴纯文本
让EditText默认粘贴纯文本的解决方案
要实现点击粘贴按钮时默认只粘贴纯文本,修改inputType属性无法解决这个问题——因为inputType只是限制输入的内容类型,管不了粘贴时的格式处理。你需要拦截系统的粘贴事件,手动处理纯文本粘贴。
步骤1:自定义EditText类
创建一个继承自AppCompatEditText的类,重写onTextContextMenuItem方法,拦截粘贴操作并替换为纯文本粘贴:
public class PureTextEditText extends androidx.appcompat.widget.AppCompatEditText { public PureTextEditText(Context context) { super(context); } public PureTextEditText(Context context, AttributeSet attrs) { super(context, attrs); } public PureTextEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onTextContextMenuItem(int id) { // 拦截系统的粘贴菜单项 if (id == android.R.id.paste) { ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); if (clipboard != null && clipboard.hasPrimaryClip()) { ClipData clipData = clipboard.getPrimaryClip(); if (clipData != null && clipData.getItemCount() > 0) { // 提取剪贴板中的纯文本内容 CharSequence plainText = clipData.getItemAt(0).getText(); if (plainText != null) { // 替换选中内容或插入到光标位置 int start = getSelectionStart(); int end = getSelectionEnd(); getText().replace(Math.min(start, end), Math.max(start, end), plainText, 0, plainText.length()); return true; // 标记该操作已处理,不再走系统默认逻辑 } } } } // 其他菜单项(剪切、复制等)正常使用系统默认处理 return super.onTextContextMenuItem(id); } }
步骤2:在布局中使用自定义EditText
把原来布局里的<EditText>标签替换成你自定义的类(注意要写完整的包名):
<com.example.yourpackage.PureTextEditText android:id="@+id/input_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/textHome" android:layout_above="@id/submit_button" android:padding="16dp" android:textColor="#F1F1F1" android:hint="Enter text here..." android:textSize="16sp" android:gravity="top|left" android:inputType="textMultiLine" android:scrollbars="vertical" android:focusable="true" android:focusableInTouchMode="true" android:background="@drawable/edittext_background"/>
注意:将
textSize的单位从dp改为sp,这是Android中设置文字大小的规范做法,能适配系统字体缩放。
这样设置后,用户点击粘贴按钮时,就会自动粘贴纯文本,不会带入颜色、下划线等格式了。
内容的提问来源于stack exchange,提问作者Anmol Panwar
相关产品推荐
相关产品推荐

