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