2

我有一个代码可以在单击时更改图像按钮的色调。

这是java代码

 button.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent me) 
        {
            if (me.getAction() == MotionEvent.ACTION_DOWN) 
            {

                button.setColorFilter(Color.argb(150, 155, 155, 155));

            } 

            else if (me.getAction() == MotionEvent.ACTION_UP) 

            {
                button.setColorFilter(Color.argb(0, 155, 155, 155)); 
                }
            return false;
        }

    });

该代码在此 xml 上运行良好,单击时按钮变暗。

  <ImageButton
    android:id="@+id/schedule"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="138dp"
    android:layout_y="169dp"
    android:src="@drawable/schedule"
    />

但它不适用于此 xml,单击时按钮不会变暗。

  <ImageButton
    android:id="@+id/schedule"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="138dp"
    android:layout_y="169dp"
    android:background="@drawable/schedule"
    />

为什么如果我使用 android:background setColorFilter 不起作用?但如果我使用 android:src 它工作正常。

4

1 回答 1

6

简单的答案是:

  • 属性引用View类的android:background一个方法,
  • android:src指的是ImageView的一个方法,

并且每个类都维护自己的后台资源。因此,当您调用 ImageView 方法时setColorFilter(),它会将过滤器应用于其本地背景资源(由 设置的那个src),setColorFilter()并且不知道由设置的 View 资源background

于 2012-09-08T16:27:52.827 回答