Mostrar copia / pegar el menú contextual en el texto usando código android

Tengo un EditText y su texto se selecciona a través de código. Pero quiero permitir a los usuarios cortar / copiar el texto seleccionado. Sin embargo, el menú contextual de corte / copia no aparece hasta que el usuario presione el texto con demasiada frecuencia. Pero entonces pierde la selección real. Por lo tanto, estoy pensando en mostrar el menú contextual como el texto se seleccionan por el código.

Intenté esto dentro deFocusChanged, pero nada apareció.

 openContextMenu(EditText); 

Introduzca aquí la descripción de la imagen

One Solution collect form web for “Mostrar copia / pegar el menú contextual en el texto usando código android”

SI te sigo usecase correctamente, puedes abrir el menú contextual desde el onFocusChangeListener registrado en el testadoEditText.

Preparé una pequeña prueba para aquello que parece estar soportando correctamente su usecase. Usted necesita abrirMenu en los ganchos que están seleccionando el contenido en el EditText.

 public class Main extends Activity { private EditText testedEditText; private Button selectingButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); selectingButton = (Button) findViewById(R.id.button); testedEditText = (EditText) findViewById(R.id.textView); registerForContextMenu(testedEditText); selectingButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { testedEditText.setSelection(6, 11); openContextMenu(testedEditText); } }); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.cmenu, menu); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.select_all: return true; case R.id.copy: //do something return true; case R.id.cut: //do something return true; case R.id.paste: //do something return true; default: return super.onContextItemSelected(item); } } 

}

Bastante bastante registrar testedEditText.requestFocus() , y fijar onFocusChangedListener para EditText no era bastante.

Archivos xml adicionales para referencia: cmenu.xml

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/select_all" android:title="select all" /> <item android:id="@+id/copy" android:title="copy" /> <item android:id="@+id/cut" android:title="cut" /> <item android:id="@+id/paste" android:title="paste" /> </menu> 

Main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World, Initial Text..." android:layout_centerInParent="true" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="button" /> </RelativeLayout> 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.