无法像按钮一样点击ImageView

时间:2015-02-27 08:07:27

标签: java android xml

  • 除了onClick()方法外,一切都还行。它根本不起作用。当我点击3张图片中的任意一张时,什么也没发生。
  • 我知道我可以通过使用Button或ImageButton解决问题。但我的代码中的错误在哪里?
  • 以下是我的代码的一部分:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //......
        discover = (ImageView) findViewById(R.id.discover);
        to_new = (ImageView) findViewById(R.id.to_new);
        me = (ImageView) findViewById(R.id.me);
    }
    
    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.discover:
            discover.setImageResource(R.drawable.discover_2);
            to_new.setImageResource(R.drawable.to_new);
            me.setImageResource(R.drawable.me);
            break;
        case R.id.to_new:
            discover.setImageResource(R.drawable.discover);
            to_new.setImageResource(R.drawable.to_new_2);
            me.setImageResource(R.drawable.me);
            break;
        case R.id.me:
            discover.setImageResource(R.drawable.discover);
            to_new.setImageResource(R.drawable.to_new);
            me.setImageResource(R.drawable.me_2);
            break;
        }
    }
    

XML:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="60dp"
            android:src="@drawable/blank"/>
        <ImageView
            android:id="@+id/discover"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/discover"
            android:clickable="true"/>
        <ImageView
            android:id="@+id/to_new"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_gravity="center"
            android:src="@drawable/to_new"
            android:clickable="true"/>
        <ImageView
            android:id="@+id/me"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/me"
            android:clickable="true"/>
    </LinearLayout>

4 个答案:

答案 0 :(得分:5)

您没有就自己的观点致电setOnClickLister。 E.g。

me.setOnClickListener(this);

this,在这种情况下是您的Activity,它正在实现View.OnClickListener接口。通过这种方式,您可以告诉视图,当发生click事件时,必须调用onClick对象中实现的this方法

答案 1 :(得分:0)

您忘记在onCreate()中设置OnClickListener。

有关详细信息,请参阅下面的参考链接。

http://examples.javacodegeeks.com/android/core/view/onclicklistener/android-onclicklistener-example/

答案 2 :(得分:0)

尝试这种方式 -

discover.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

    to_new.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });
    me.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

答案 3 :(得分:0)

在create method

中调用onclick方法

discover.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});

to_new.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});
me.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    }
});