Android Studio:如何在单行中从TextView或EditText复制文本

时间:2017-12-28 11:38:22

标签: android android-studio copy-paste

我正在创建一个加密文本并自动复制的应用程序。

这是XML:

  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/txt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Enter Text To Encrypt or To Decrypt"
            android:inputType="text" />

        <EditText
            android:id="@+id/txtkey"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Enter KEY"
            android:inputType="text" />

        <EditText
            android:id="@+id/txtsalt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Enter SALT"
            android:inputType="text" />

        <EditText
            android:id="@+id/txtres"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Result"
            android:clickable="false"
            android:inputType="none"
            android:singleLine="true" />

        <Button
            android:id="@+id/btnencrypt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Encrypt" />

        <Button
            android:id="@+id/btndecrypt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Decrypt" />

        <Button
            android:id="@+id/btnclear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Clear" />

    </LinearLayout>

这是Btnencrypt代码,它加密+复制到加密文本

        btnencrypt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String encrypted = Encrypt(txt.getText().toString(), txtkey.getText().toString(),txtsalt.getText().toString());
            txtres.setText(encrypted);
            ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            ClipData clip = ClipData.newPlainText("label", txtres.getText().toString().trim());
            clipboard.setPrimaryClip(clip);
            Toast.makeText(getApplicationContext(), "Encrypted Text Copied", Toast.LENGTH_SHORT).show();
            txt.setText("");
        }
    });

当我将加密文本传递到Notepad ++时,它采用了一种奇怪的格式:2行文本和一行空行。我想要的是将整个文本放在一行中,参见下面的图像

http://hpics.li/e355430

修改

通过添加.trim(),删除无用的行,但我仍然有2行文本而不是单行

btnencrypt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String encrypted = Encrypt(txt.getText().toString().trim(), txtkey.getText().toString().trim(),txtsalt.getText().toString().trim());
        txtres.setText(encrypted.trim());
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("label", txtres.getText().toString());
        clipboard.setPrimaryClip(clip);
        Toast.makeText(getApplicationContext(), "Encrypted Text Copied", Toast.LENGTH_SHORT).show();
        txt.setText("");
    }
});

3 个答案:

答案 0 :(得分:0)

当您尝试从对象中获取文本时,必须使用trim() ...

 txtres.setText(Decrypt(txt.getText().toString().trim(), txtkey.getText().toString().trim(),txtsalt.getText().toString().trim()));
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("label", txtres.getText().toString().trim());
        clipboard.setPrimaryClip(clip);

答案 1 :(得分:0)

你能不能简单地删除格式化?

ClipData.newPlainText("label", textView.getText().toString().replaceAll("\n", "").trim());

答案 2 :(得分:0)

将以下参数添加到textView检查以下代码

    String encrypted = Encrypt(txt.getText().toString(), txtkey.getText().toString(),txtsalt.getText().toString());
    txtres.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    txtres.setSingleLine(true);
    txtres.setMaxLines(1);
    txtres.setLines(1);
    txtres.setMarqueeRepeatLimit(-1); // marquee forever
    txtres.setHorizontalFadingEdgeEnabled(true);
    txtres.setHorizontallyScrolling(true);
    txtres.setFocusable(true);
    txtres.setFocusableInTouchMode(true);
    txtres.setSelected(true);
    txtres.setLayoutParams(params);
    txtres.setTextSize(30);
    txtres.setText(encrypted.trim());
    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newPlainText("label", txtres.getText().toString());
    clipboard.setPrimaryClip(clip);
    Toast.makeText(getApplicationContext(), "Encrypted Text Copied", Toast.LENGTH_SHORT).show();
    txt.setText("");