2010-11-15 13 views
6

Czy można dodać coś do listy elementów wyświetlanych, gdy użytkownik długo naciśnie dowolny tekst edycji? (Wytnij, kopiuj wklej, zaznacz tekst, wybierz wszystko, metoda wprowadzania) Chcę dodać opcję, która zeskanuje kod QR i wklei wynik do tekstu edycji. Myślę, że nie byłoby to bardzo trudne, aby uzyskać to zachowanie z Edit Texts, które umieszczam w mojej własnej aplikacji, ale chcę dodać tę opcję do dowolnego edytowanego tekstu w dowolnej aplikacji na moim telefonie. Czy coś takiego jest możliwe, jeśli tak, czy ktoś może wskazać mi właściwy kierunek?Android Długie naciśnięcie Edytuj zachowanie tekstu

Edycja 150 bounty: Czekam, aby dodać element do okna podręcznego EditText, gdy jest długo naciśnięty. Chcę znaleźć sposób, aby ten system zmian był szeroki, nie tylko w kontekście 1 wniosku.

+0

Czy kiedykolwiek dowiedziałeś się, jak zrobić ten system szeroko? Próbuję dowiedzieć się, jak to zrobić z małym sukcesem. – Silvae

+3

Nie, nigdy nie natknąłem się na sposób. Najlepszym pomysłem było stworzenie aplikacji do wymiany klawiatury, która mogłaby mieć przycisk skanowania. – FoamyGuy

Odpowiedz

5

ów nie możliwe, jak menu kontekstowe jest wypełniana przez samych aplikacji i nie przez system. Nie można wymusić, aby inne aplikacje miały element kontekstu, którego mogą nie używać w swoim życiu. Możesz przynajmniej mieć tę funkcję w aplikacjach, które są świadome Twojej aplikacji.

Utwórz działanie, które zapełnia i obsługuje tylko elementy menu globalnego. Inne aplikacje mogą korzystać z tej funkcji, rozszerzając swoją aktywność. Ale to również spowoduje problemy, ponieważ inne aplikacje będą miały poważne uzależnienie od Twojej aplikacji. Jeśli więc Twoja aplikacja nie jest zainstalowana w tym systemie, druga aplikacja nie będzie działać. Nie można również wskazać tej zależności w pliku manifestu, ponieważ zależna aplikacja jest ukryta na rynku, jeśli Twoja aplikacja nie jest jeszcze zainstalowana.
Jestem pewien, że nie jest to odpowiedź, której szukałeś, ale menu kontekstowe są tworzone zgodnie z projektem.

1

Tak, możliwe jest dodanie czegoś do listy pozycji w LongClick of EditText.

Aby wprowadzić Cię w odpowiedni sposób, publikuję niektóre fragmenty kodu.

W main.xml zrobić coś takiego

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

następnie w swojej głównej działalności, zrobić coś podobnego

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

Nadzieja pomaga

3

Istnieją 2 sposoby: 1. Jeden z opisem przez Shahab. Druga jest bardziej prosta. Trzeba tylko przesłonić metodę standardową swojej działalności, jak:

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

Potem będziesz musiał na długo prasowej menu kontekstowego popup

+0

Myślę, że to jest bliższe temu, czego szukam. Ale nie zamierzam wykonywać tej pracy w jednej z moich aplikacji. Chcę, żeby był szeroki dla systemu, gdy długo naciskam na dowolny tekst edycji w dowolnej aplikacji. Chcę dodać opcję do menu, które się pojawi. Czy można zrobić coś takiego w tym systemie? – FoamyGuy

+0

To niemożliwe, ponieważ menu kontekstowe jest zapełniane przez same aplikacje, a nie przez system. Nie można wymusić, aby inne aplikacje miały element kontekstowy, którego mogą nie potrzebować. Możesz przynajmniej mieć tę funkcję w aplikacjach, które są świadome Twojej aplikacji. utwórz bibliotekę z działaniem, które zapełnia Twoje pozycje w menu. Inne aplikacje mogą korzystać z tej funkcji, rozszerzając swoją aktywność. – Ronnie

+0

@ userSeven7s: Chciałbym się spierać.Jeśli będziesz mieć jedną główną aktywność, która jest nadrzędna dla wszystkich działań aplikacji - możesz nadpisać onCreatContextMenu w sposób opisany powyżej - tak długo, gdy użytkownik długo będzie naciskał, pojawi się menu kontekstowe, huh? – barmaley

Powiązane problemy