在像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外部点击时完成活动
答案 0 :(得分:2)
只需将onClickListener
附加到您的布局的根目录(很可能是LinearLayout
左右),然后在点击该元素时定期finish()
。
答案 1 :(得分:2)
您必须在xml布局文件中设置RelativeLayout
属性android:clickable="true"
或在java活动代码中设置setClickable(true)
。只需调用finish();
即可完成onClickListener中的当前活动。
答案 2 :(得分:1)
如果您正在使用FragmentActivity
或Activity
类的另一个子类,则可以在创建活动时通过调用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();