ImageButton和Button不设置点击事件也会拦截父View的点击事件
在layout中,即使不对ImageButton和Button设置点击事件,当点击ImageButton和Button时,也会导致父View的点击无响应。
layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/layout1"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:orientation="vertical"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:background="#EEEED1">
<ImageButton
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:id="@+id/layout2"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:orientation="vertical"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_marginTop="10dp"
android:background="#EEEED1">
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Button"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
</LinearLayout>
public class MainActivity extends Activity{
private LinearLayout layout1;
private ImageButton imageButton1;
private LinearLayout layout2;
private Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout1 = (LinearLayout) findViewById(R.id.layout1);
imageButton1 = (ImageButton) findViewById(R.id.button1);
layout2 = (LinearLayout) findViewById(R.id.layout2);
button2 = (Button) findViewById(R.id.button2);
//即使ImageButton和Button不设置点击事件监听,也会拦截事件,导致父view获取不到点击
layout1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击父1", Toast.LENGTH_SHORT).show();
}
});
// imageButton1.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// Toast.makeText(getApplicationContext(), "点击ImageButton", Toast.LENGTH_SHORT).show();
// }
// });
//即使ImageButton和Button不设置点击事件监听,也会拦截事件,导致父view获取不到点击
layout2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击父2", Toast.LENGTH_SHORT).show();
}
});
// button2.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// Toast.makeText(getApplicationContext(), "点击Button", Toast.LENGTH_SHORT).show();
// }
// });
}
}
不论用FrameLayout 还是RelativeLayout,点击事件还是没响应。