>>> import os
>>> os.system('cd c:\mydir')
На самом деле, os.system()
может выполнить любую команду, которую может выполнить команда Windows, а не только изменить каталог.
Хотя этот будет работать, возможно, будет лучшее решение, если вы хотите, чтобы ваш TextView
действовал больше как стандарт EditText
и отображал контекстное меню.
Вы можете сделать что-то вроде этого
class SomeActivity : AppCompatActivity() {
override fun onCreate() {
// super.onCreate() and setContentView() calls ommited for clarity
// Assuming that pastableTextView is the TextView you want to paste into
registerForContextMenu(pastableTextView)
}
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
// oversimplified for sake of example
if (v?.id == pastableTextView.id) {
menu?.add(0, v.id, 0, android.R.string.paste)
}
}
override fun onContextItemSelected(item: MenuItem?): Boolean {
// again, oversimplified for the sake of example
if (item?.itemId == pastableTextView.id) {
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager?
// This is clipboard's contents
val content = clipboardManager?.primaryClip?.getItemAt(0)?.text?
}
return false
}
}
Имейте в виду, что этот код не является оптимальным, и я не рекомендую использовать его для производственного приложения, как есть.
Другое решение, которое я хотел бы предложить, это использовать edittext и скрыть клавиатуру для этого конкретного edittext, просто включите функции копирования и вставки, и он выглядит как Textview, а если вы не хотите, чтобы курсор мигал, просто отключите это тоже.
В Android нет собственного способа для этого, но я написал пример кода того, как вы можете легко достичь того, что вы хотите. Вы просто устанавливаете прослушиватель длинных щелчков на textview, и внутри него вы показываете AlertDialog для всплывающих окон, который имеет возможность вставки, и когда вы нажимаете, он использует ClipboardManager для получения основного содержимого в буфере обмена. В зависимости от ваших потребностей вы можете настроить код и использовать что угодно вместо AlertDialog (например, мы использовали контекстное меню раньше, но оно вызывало сбои в различных версиях Android, поэтому мы заменили его на AlertDialog). Дайте мне знать, если у вас есть вопросы.
textView.setLongClickable(true);
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(ArticleActivity.this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(ArticleActivity.this);
}
builder.setTitle("Paste")
.setMessage("Are you sure you want to paste this entry?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
if (clipboardManager != null) {
Log.e("TAG", "clipboard:" + clipboardManager.getPrimaryClip());
}
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.show();
return true;
}
});