我正在创建一个加密文本并自动复制的应用程序。
这是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行文本和一行空行。我想要的是将整个文本放在一行中,参见下面的图像
修改
通过添加.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("");
}
});
答案 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("");