Android: Включить событие щелчка в пустой области активности

#android #events #background #click

#Android #Мероприятия #фон #нажмите

Вопрос:

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

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

Спасибо,

дара кок

Ответ №1:

Можно добавить событие щелчка в свою активность. Вам нужно сделать, как показано ниже:

Вы могли бы сделать 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

        }
    });
  

Ответ №2:

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

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

Ответ №3:

Вы можете добавить 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
    }
});