Я задал тему своей деятельности полупрозрачной, чтобы перейти в нижнее окно активности.
Я хочу знать, можно ли включить событие click, когда пользователь нажимает на пустую область на этой полупрозрачной активности?
Спасибо,
dara kok
В мероприятие можно добавить событие click. Вам нужно сделать следующее:
Вы могли бы сделать 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
}
});
Переопределение этого будет работать: http://developer.android.com/reference/android/app/Activity.html#onTouchEvent(android.view.MotionEvent)
Однако я думаю, что это ваша полупрозрачная активность, которая получит краны, а не ту, что видна под ней.
Вы можете добавить 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
}
});