Android выбирает слово в TextView или EditView

Я пытаюсь найти простой способ для пользователя выбрать слово, желательно долгим нажатием на слово в TextView. По сути, у меня есть TextView, заполненный текстом, и я хотел бы, чтобы пользователь имел возможность долго нажимать слово, а затем отображать контекстное меню, чтобы я мог выполнить поиск в базе данных? Это возможно? Я также могу переключиться на EditText, если я могу сделать его похожим на TextView. Есть смысл?

Спасибо.


person Michael Little    schedule 30.11.2010    source источник


Ответы (1)


Очень просто.

Сначала создайте свой TextView и registerForContextMenu():

private AdapterContextMenuInfo info;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   TextView text = (TextView) findViewById(R.id.txtbtn);
   text.setText("Click Me!");

   registerForContextMenu(text);
}

Затем создайте свой ContextMenu:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    info = (AdapterView.AdapterContextMenuInfo)menuInfo;
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);
}   
@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.call: 

        String phone="555-555-555";
        String toDial="tel:"+phone.toString();

        Uri uri = Uri.parse(toDial);
        Intent it = new Intent(Intent.ACTION_DIAL, uri);  
        startActivity(it);  

    return true;

    default:
    return super.onContextItemSelected(item);
    }
}

context_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/call"
          android:title="CALL" />
</menu>
person j3ffz    schedule 30.11.2010
comment
Я не слежу за тобой. Я не хочу никому звонить. Я хочу скопировать текст ниже, где они долго нажимали. - person Michael Little; 30.11.2010
comment
скопируйте его или просто получите доступ к тексту, который они долго нажимали. - person Michael Little; 30.11.2010
comment
Я привел вам пример TextView с контекстным меню. Разве это не то, чего ты хочешь? - person j3ffz; 01.12.2010
comment
Извините, это было не совсем то, что я искал. Возможно, мой вопрос был недостаточно ясен. Я уже знаю, как получить контекстное меню. Мне нужно знать, можно ли получить текст при длительном нажатии на текстовое представление. Я хотел бы слово, которое находится под долгим нажатием. Это более понятно? - person Michael Little; 01.12.2010