Android: включить событие клика в пустой области активности - PullRequest
2 голосов
/ 08 апреля 2011

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

Я хочу знать, возможно ли включить событие щелчка, когда пользователь нажимает на пустую область в этом полупрозрачном действии?

Спасибо,

dara kok

Ответы [ 3 ]

6 голосов
/ 08 апреля 2011

Возможно добавить событие клика к вашей активности.Вам необходимо сделать следующее:

Вы могли бы сделать setContentView (R.layout.main);в onCreate () вашей активности.

В main.xml укажите идентификатор для корневого макета.Например,

Давайте рассмотрим, что у вас есть root как LinearLayout с идентификатором, установленным ниже,

Затем в onCreate () вашей деятельности вам нужно будет выполнитьследующее:

LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
layout.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });
3 голосов
/ 08 апреля 2011

Переопределение этого сработало бы: http://developer.android.com/reference/android/app/Activity.html#onTouchEvent(android.view.MotionEvent)

Однако я думаю, что ваша прозрачная активность получит сигналы, а не ту, что видна под ней.

1 голос
/ 25 сентября 2014

Вы можете добавить OnClickListener в родительский вид вашего макета. Например, добавьте android:id="@+id/some_id" к вашему родительскому LinearLayout в main.xml.

Затем добавьте этот код после setContentView в методе onCreate:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.some_id);
FrameLayout frameLayout = (FrameLayout) linearLayout.getParent(); // Get parent FrameLayout
frameLayout.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed(); // Close activity, for example
    }
});

linearLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // empty block for prevent frameLayout click event, if you need
    }
});
...