2010-11-15 7 views
6

Ist es möglich, etwas zu der Liste der Elemente hinzuzufügen, die angezeigt wird, wenn ein Benutzer lange auf Text Bearbeiten drückt? (Ausschneiden, Kopieren Einfügen, Text auswählen, Alles auswählen, Eingabemethode) Ich möchte eine Option hinzufügen, die einen QR-Code scannt und das Ergebnis in den Text Bearbeiten einfügt. Ich denke, es wäre nicht sehr schwer, dieses Verhalten aus den Bearbeitungstexten herauszuholen, die ich in meine eigene Anwendung einfüge, aber ich möchte diese Option zu jedem Editier-Text in jeder Anwendung auf meinem Telefon hinzufügen. Ist so etwas möglich, wenn ja, kann mir jemand in die richtige Richtung weisen?Android Long Drücken Sie auf Bearbeiten Text Verhalten

Edit 150 bounty: Ich suche nach einem Element zum EditText Pop-up-Dialog hinzufügen, wenn es lang gedrückt wird. Ich bin auf der Suche nach einer Möglichkeit, dieses Change-System zu erweitern, nicht nur im Rahmen von 1 Anwendung.

+0

Haben Sie jemals herausgefunden, wie Sie dieses System weit bringen? Ich versuche herauszufinden, wie man es mit wenig Erfolg macht. – Silvae

+3

Nein, kam nie auf einen Weg. Die beste Idee, die ich hatte, war eine Tastatur-Ersatz-App zu erstellen, die einen Scan-Button haben könnte. – FoamyGuy

Antwort

5

Das ist nicht möglich haben werden, wie das Kontextmenü von Anwendungen bevölkert selbst und nicht vom System. Sie können nicht erzwingen, dass andere Apps ein Kontextelement haben, das sie in ihrer Lebensdauer möglicherweise nicht verwenden. Sie können mindestens die Funktion in Apps haben, die Ihre App kennen.

Erstellen Sie eine Aktivität, die nur Ihre globalen Menüelemente auffüllt und verarbeitet. Andere Apps können diese Funktion nutzen, indem Sie Ihre Aktivität erweitern. Aber auch dies wird zu Problemen führen, da die anderen Apps stark von Ihrer App abhängig sind. Wenn Ihre App nicht in diesem System installiert ist, funktioniert die andere App nicht. Es gibt auch keine Möglichkeit, diese Abhängigkeit in der Manifestdatei anzugeben, sodass die abhängige App auf dem Markt ausgeblendet ist, wenn Ihre App nicht bereits installiert ist.

Ich bin sicher, das ist nicht die Antwort, die Sie gesucht haben, aber Kontextmenüs sind so von Design gemacht.

1

Ja, es ist möglich, etwas zur Liste der Elemente auf LongClick von EditText hinzuzufügen.

Um Sie in die richtige Richtung zu bringen, poste ich einige Code-Schnipsel.

In main.xml etwas tun, wie

<?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> 

Danach in der Hauptaktivität etwas tun, wie

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; 
     } 
    }); 
} 
} 

Hoffe, dass es

3

Es gibt 2 Möglichkeiten hilft: 1. beschriebene von Shahab. 2. ist einfacher. Sie müssen nur Standardmethode Ihrer Aktivität außer Kraft setzen, wie:

@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); 
} 

Danach können Sie auf lange drücken Popup-Kontextmenü

+0

Ich denke, das ist näher an dem, was ich suche. Aber ich möchte nicht, dass dies in einer meiner Anwendungen funktioniert. Ich möchte, dass es systemweit ist, wenn ich irgendeinen Editier-Text innerhalb einer Anwendung lang drücke. Ich möchte eine Option zu dem Menü hinzufügen, das erscheint. Ist es möglich, so etwas systemweit zu machen? – FoamyGuy

+0

Das ist nicht möglich, da das Kontextmenü von den Anwendungen selbst und nicht vom System ausgefüllt wird. Sie können nicht verhindern, dass andere Apps ein Kontextelement haben, das sie möglicherweise nicht benötigen. Sie können mindestens die Funktion in Apps haben, die Ihre App kennen. Erstellen Sie eine Bibliothek mit einer Aktivität, die Ihre Menüelemente auffüllt. Andere Apps können diese Funktion nutzen, indem Sie Ihre Aktivität erweitern. – Ronnie

+0

@ userSeven7s: Ich würde streiten.Wenn Sie eine root-Aktivität haben, die für alle Aktivitäten der Anwendung übergeordnet ist - Sie können onCreatContextMenu auf eine Weise überschreiben, die ich oben beschrieben habe - also wenn ein Benutzer lange drückt, wird es ein Kontextmenü geben, nicht wahr? – barmaley

Verwandte Themen