Android:在空活动区域启用点击事件

时间:2011-04-08 06:59:25

标签: android events background click

我将活动主题设置为半透明,以便查看下面的活动窗口。

我想知道当用户点击这个半透明活动的空白区域时是否可以启用点击事件?

谢谢,

dara kok

3 个答案:

答案 0 :(得分:6)

可以将click事件添加到您的活动中。您需要执行以下操作:

你可以做setContentView(R.layout.main);在你活动的onCreate()中。

在main.xml中,为根布局提供一些id。例如,

让我们考虑你将root作为LinearLayout,id设置如下,

然后在活动的onCreate()中,您必须执行以下操作:

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

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

        }
    });

答案 1 :(得分:3)

覆盖它会起作用: http://developer.android.com/reference/android/app/Activity.html#onTouchEvent(android.view.MotionEvent

然而,我认为这是你的半透明活动,它将获得水龙头,而不是它下面可见的水龙头。

答案 2 :(得分:1)

您可以在布局的父视图上添加OnClickListener。 例如,将android:id="@+id/some_id"添加到main.xml中的父LinearLayout。

然后在onCreate方法中的setContentView之后添加此代码:

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