как я могу поймать событие, когда щелчок происходит где-то на экране приложения?
Неважно, есть ли кнопка или что-то еще. Мне просто нужно применить прослушиватель событий onClick()
на экране всего приложения.
Как это сделать?
Как запускать событие, когда кто-то щелкает в любом месте экрана в приложении для Android?
Ответ 1
setonclicklistner
для основного макета вашего файла макета....
Как.... main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainlayout">
<!- Your other view->
</Relativelayout>
и установите функцию прослушивания кликов для mainlayout...
RelativeLayout rlayout = (RelativeLayout) findViewById(R.id.mainlayout);
rlayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
Ответ 2
Дайте основной макет идентификатору, затем
LinearLayout root = (LinearLayout) findViewById(R.id.main_layout);
root.setOnClickListener(new OnClickListener() {
public void onClick()
{
}
});
Ответ 3
Возможно, вы можете добавить слушателя к экземпляру макета, получив макет с помощью
RelativeLayout l = (RelativeLayout)findViewById(R.id.mylayout);
l.setOnClickListener(click);
Ответ 4
Вы также можете напрямую установить обратный вызов из атрибута onClick
xml корневого макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:onClick"myMethod">
<!- Your other view->
</Relativelayout>
И в вашей деятельности:
public void myMethod(View pView) {
//XXX do something
}
Менее раздутый код:)
Ответ 5
Я считаю, что самый простой способ - переопределить onUserInteraction в Activity
Просто имейте в виду, что он не срабатывает, когда пользователи фокусируются вкл/выкл EditText
и Spinners
(возможно, другие виджеты тоже). Но он срабатывает каждый раз, когда пользователь прикасается к экрану или нажимает кнопку.
Но это делает ненужным создавать слушателей в ваших макетах или писать дополнительные методы для обработки этих слушателей, поэтому я считаю, что это самый безотказный способ получить то, что вы хотите.