如何在ImageView外部点击时完成活动

时间:2014-07-15 08:05:45

标签: android android-layout

在像ImageView或TextView这样的某个组件外部点击时,是否可以完成或关闭活动?如果是......怎么做?

我的布局代码

<FrameLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
tools:ignore="PxUsage,UselessParent" >

<RelativeLayout
    android:id="@+id/contents"
    android:layout_width="720px"
    android:layout_height="1280px"
    android:layout_gravity="center" 
    android:clickable="true">

    <ImageView
        android:id="@+id/shortcutImageView"
        android:layout_width="533px"
        android:layout_height="727px"
        android:layout_alignParentRight="true"
        android:layout_marginRight="15px"
        android:layout_marginTop="165px"
        android:background="@drawable/shortcut_bg"
        android:contentDescription="@string/imageDesc" />


    </RelativeLayout>

</FrameLayout>

我希望在此ImageView外部点击时完成活动

5 个答案:

答案 0 :(得分:2)

只需将onClickListener附加到您的布局的根目录(很可能是LinearLayout左右),然后在点击该元素时定期finish()

答案 1 :(得分:2)

您必须在xml布局文件中设置RelativeLayout属性android:clickable="true"或在java活动代码中设置setClickable(true)。只需调用finish();即可完成onClickListener中的当前活动。

答案 2 :(得分:1)

如果您正在使用FragmentActivityActivity类的另一个子类,则可以在创建活动时通过调用setFinishOnTouchOutside将其设置为在窗口边界外触摸时自行完成

setFinishOnTouchOutside(true);

答案 3 :(得分:1)

首先对你的xml进行编码:

<LinearLayout
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

<ImageButton
           android:id="@+id/btn"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:src="@drawable/image" />
</LinearLayout>

然后在你的活动中:

LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    layout.setOnTouchListener(new OnTouchListener()
    {
        @Override
        public boolean onTouch(View view, MotionEvent ev)
        {
            finish();
            return false;

        }
    });

希望这对你有用......

答案 4 :(得分:0)

   RelativeLayout layout = (RelativeLayout) findViewById(R.id.contents);
               layout.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                   finish();    
                }
            });

            this.initContent();