Android долгое нажатие на поведение редактирования текста - PullRequest
7 голосов
/ 15 ноября 2010

Можно ли добавить что-то в список элементов, который появляется, когда пользователь долго нажимает на любой текст редактирования?(Вырезать, скопировать, вставить, выделить текст, выбрать все, метод ввода) Я хочу добавить к этому параметр, который будет сканировать QR-код и вставлять результат в текст редактирования.Я думаю, что было бы не очень сложно вывести это поведение из Edit Text, которые я поместил в свое собственное приложение, но я хочу добавить эту опцию в любой Edit Text внутри любого приложения на моем телефоне.Возможно ли что-то подобное, если да, может ли кто-нибудь указать мне правильное направление?

Изменить награду 150: я ищу, чтобы добавить элемент во всплывающее диалоговое окно «EditText», когда оно долго нажимается.Я хочу найти способ сделать эту систему изменений широкой, а не только в контексте одного приложения.

Ответы [ 3 ]

6 голосов
/ 12 сентября 2011

Это невозможно, поскольку контекстное меню заполняется самими приложениями, а не системой.Вы не можете заставить другие приложения иметь элемент контекста, который они могут не использовать при жизни.По крайней мере, вы можете использовать эту функцию в приложениях, которые знают о вашем приложении.

Создайте действие, которое заполняет и обрабатывает только ваши глобальные пункты меню.Другие приложения могут использовать эту функцию, расширяя вашу активность.Но это также создаст проблемы, так как другие приложения будут сильно зависеть от вашего приложения.Так что, если ваше приложение не установлено в этой системе, то другое приложение не будет работать.Также невозможно указать эту зависимость в файле манифеста, чтобы зависимое приложение было скрыто на рынке, если ваше приложение еще не установлено.

Я уверен, что это не тот ответ, который вы искалидля, но контекстные меню сделаны так по замыслу.

4 голосов
/ 15 ноября 2010

Есть 2 способа: 1-й, описанный Шахабом.2-й более простой.Вам нужно просто переопределить стандартный метод вашей деятельности, например:

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

После этого вы будете долго нажимать всплывающее контекстное меню

1 голос
/ 15 ноября 2010

Да, можно добавить что-то в список элементов на LongClick EditText.

Чтобы направить вас в правильном направлении, я публикую некоторые фрагменты кода.

В main.xml сделать что-то вроде

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

После этого в своей основной деятельности сделайте что-то вроде

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

Надеюсь, это поможет

...