OnClickListener 不适用于 ImageView

twb*_*bas 1 java android

我很确定一切正常,但是当我单击任何图像时,日志没有显示在 Eclipse 的控制台区域中。

最终,我希望在单击这些图像时出现一个弹出菜单,但现在我只是想让 onclick 事件正常工作,然后我将在稍后添加这些事件。

我的代码:

爪哇

public class SecondScreen extends HelloAndroid {
    public void onCreate(Bundle savedInstanceState) {

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

           super.onCreate(savedInstanceState);
           setContentView(R.layout.main2);

           // initialize header
           ImageView header = (ImageView) findViewById(R.id.header_image);
           header.setOnClickListener(headerClick);

           // Make sure vitals and details are same size
           LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
           params.weight = 0.5f;

           // initialize vitals image
           ImageView vitals = (ImageView) findViewById(R.id.vitalsigns_image);
           vitals.setLayoutParams(params);
           vitals.setOnClickListener(vitalsClick);

           // initialize details image
           ImageView details = (ImageView) findViewById(R.id.details_image);
           details.setLayoutParams(params);
           details.setOnClickListener(detailsClick);




       }

        private OnClickListener headerClick = new OnClickListener() {

            public void onClick(View view) {
                Log.d("Clicked", "Header Clicked!");



            }
       };


        private OnClickListener vitalsClick = new OnClickListener() {

             public void onClick(View view) {
                Log.d("Clicked", "Vitals Clicked!");



             }
        };

        private OnClickListener detailsClick = new OnClickListener() {

             public void onClick(View view) {
                Log.d("Clicked", "Details Click!");



             }
        };
}
Run Code Online (Sandbox Code Playgroud)

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- HEADER -->

    <ImageView 
       android:id="@+id/header_image"
       android:src="@drawable/header"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
    /> 



<!-- FOOTER -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#000000"  
    android:layout_alignParentBottom="true">
    >


    <ImageView
        android:id="@+id/vitalsigns_image"
        android:src="@drawable/vitalsigns"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_alignParentBottom="true"
    />

    <ImageView
        android:id="@+id/details_image"
        android:src="@drawable/details"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_alignParentBottom="true"
    />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dan*_*odi 5

我遇到了同样的问题。经过几个小时的挣扎,能够自己找到解决方案。如果 ImageView 在 RelativeLayout 或 LinearLayout 内,只需添加android:focusable="true". ImageView 也应该有android:focusable="true"android:clickable="true"