2010-11-15 21 views
6

¿Es posible agregar algo a la lista de elementos que aparece cuando un usuario presiona durante mucho tiempo en Editar texto? (Cortar, copiar y pegar, seleccionar texto, seleccionar todo, método de entrada) Quiero agregar una opción a esto que escanee un código QR y pegue el resultado en Editar texto. Creo que esto no sería muy difícil para sacar este comportamiento de Editar Textos que puse en mi propia aplicación, pero quiero agregar esta opción a cualquier Texto de Edición dentro de cualquier aplicación en mi teléfono. Es posible algo así, si es así, ¿puede alguien señalarme en la dirección correcta?Android Long Presione Editar comportamiento de texto

Editar 150 bounty: Estoy buscando agregar un elemento al cuadro de diálogo emergente EditText cuando se lo presiona largamente. Quiero buscar una forma de hacer que este sistema de cambio sea amplio, no solo dentro del contexto de 1 aplicación.

+0

¿Alguna vez descubrió cómo hacer este sistema? Intento descubrir cómo hacerlo con poco éxito. – Silvae

+3

No, nunca se encontró con un camino. La mejor idea que tuve fue crear una aplicación de reemplazo de teclado que pudiera tener un botón de escaneo. – FoamyGuy

Respuesta

5

Eso no es posible, ya que el menú contextual está poblada por ellos mismos y aplicaciones no por el sistema No puede obligar a otras aplicaciones a tener un elemento de contexto que podrían no usar durante su vida útil. Al menos puede tener la función en aplicaciones que conocen su aplicación.

Crea una actividad que rellena y maneja solo los elementos del menú global. Otras aplicaciones pueden usar la función extendiendo tu actividad. Pero esto también creará problemas, ya que las otras aplicaciones tendrán una fuerte dependencia de su aplicación. Entonces, si su aplicación no está instalada en ese sistema, entonces la otra aplicación no funcionará. Además, no hay forma de indicar esta dependencia en el archivo de manifiesto para que la aplicación dependiente se oculte en el mercado si su aplicación aún no está instalada.

Estoy seguro de que esta no es la respuesta que estabas buscando, pero los menús contextuales están hechos por diseño.

1

Sí, es posible agregar algo a la lista de elementos en LongClick of EditText.

Para ponerlo en la dirección correcta, estoy publicando algunos fragmentos de código.

En main.xml hacer algo como

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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/textt" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/hello" 
/> 

</LinearLayout> 

Después de que en su actividad principal, hacer algo como

public class edit extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    EditText text = (EditText)this.findViewById(R.id.textt); 
    text.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 

      //ADD HERE ABOUT CUT COPY PASTE 
      // TODO Auto-generated method stub 
      return false; 
     } 
    }); 
} 
} 

creo que sirve

3

Hay 2 maneras: primero uno describió por Shahab. El segundo es más simple. Usted necesita simplemente reemplazar el método estándar de su actividad, como:

@Override 
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) 
{ 
     if(view.getId()==R.id.MyEditTextId) 
     { 
      menu.add(Menu.NONE, MyMenu, Menu.NONE, R.string.MyMenuText); 
     } 
     else 
      super.onCreateContextMenu(menu, view, menuInfo); 
} 

Después de que usted tendrá el tiempo pulse menú contextual

+0

Creo que esto está más cerca de lo que estoy buscando. Pero no estoy buscando hacer que esto funcione en una de mis aplicaciones. Quiero que sea todo el sistema cada vez que presiono durante mucho tiempo cualquier texto de edición dentro de cualquier aplicación. Quiero agregar una opción al menú que aparece. ¿Es posible hacer algo así como este sistema? – FoamyGuy

+0

Eso no es posible, ya que el menú contextual lo completan las aplicaciones y no el sistema. No puede obligar a otras aplicaciones a tener un elemento de contexto que quizás no necesiten. Al menos puede tener la función en aplicaciones que conocen su aplicación. crea una biblioteca con una actividad que llene tus elementos de menú. Otras aplicaciones pueden usar la función extendiendo tu actividad. – Ronnie

+0

@ userSeven7s: Yo discutiría.Si tiene una Actividad raíz que es principal para todas las actividades de la aplicación, puede anular OnCreatContextMenu de la forma que he descrito anteriormente, de modo que siempre que el usuario lo presione, aparecerá el menú contextual, ¿eh? – barmaley

Cuestiones relacionadas