我有一个RelativeLayout和一个ImageView。
以下是布局 -
我已经为RelativeLayout(父)和ImageView(子)都应用了点击监听器。 当单击相对布局时,它会由相对布局的点击处理程序处理。(这似乎是正确的。) 当单击ImageView时,它将由ImageView处理。(这里有些困惑。) 单击ImageView时,父视图(相对布局)和子视图(ImageView)是否都应该处理? 如果只有子视图处理单击事件,那么逻辑上如何解释?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" >
<ImageView
android:id="@+id/ivIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher" />
</RelativeLayout>
Activity
代码是 -
public class MainActivity extends Activity implements OnClickListener{
private RelativeLayout rlMain;
private ImageView ivIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rlMain = (RelativeLayout) findViewById(R.id.rlMain);
ivIcon = (ImageView) findViewById(R.id.ivIcon);
rlMain.setOnClickListener(this);
ivIcon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rlMain:
Toast.makeText(this, "Relative Layout clicked", Toast.LENGTH_SHORT).show();
break;
case R.id.ivIcon:
Toast.makeText(this, "Image View clicked", Toast.LENGTH_SHORT).show();
break;
}
}
}
我已经为RelativeLayout(父)和ImageView(子)都应用了点击监听器。 当单击相对布局时,它会由相对布局的点击处理程序处理。(这似乎是正确的。) 当单击ImageView时,它将由ImageView处理。(这里有些困惑。) 单击ImageView时,父视图(相对布局)和子视图(ImageView)是否都应该处理? 如果只有子视图处理单击事件,那么逻辑上如何解释?
RelativeLayout
的onClick
监听器也将被调用。 - Pramod RavikantOnCreate()
方法中删除.setOnClickListener
(对于ImageView
和RelativeLayout
都是如此)。相反,将android:onClick="onClickFunction"
放在两个布局上,并将onClick()
重命名为onClickFunction()
(@Override
注释也必须被删除)。这肯定会起作用! - g00dyImageView
在上面。所以你想同时调用它们两个? - Pramod RavikantImageView
是wrap_content
,如果它比RelativeLayout
小,您也可以单击布局。 - g00dy