Android setColorFilter不会更新按钮

时间:2011-06-22 14:26:57

标签: android button filter gps clickable

我有一个按钮:

.setClickable(false);

.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);

初始化。

然后我等待GPS信号,当找到一个时,我将setClickable设置为true,将ColorFilter设置为null。这确实有效,但除非在任何地方触摸屏幕,否则不会更新按钮。

我确信这不是GPS代码中的一些循环错误,因为一旦按下此按钮,另一个设置为可点击并且过滤器为null,但完全相同的事情发生。

以前有没有经历过这个?它发生在2.2和2.3

下面是按钮的actionlistener示例:

setgps1.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            if(!gps1set)
            {
                gps1set = true;
                setgps1.setText("Reset");
                latitude1.setText(latitude1.getText()+ "   +/-"+gpsaccuracy+"m");
                longitude1.setText(longitude1.getText()+ "   +/-"+gpsaccuracy+"m");
                altitude1.setText(altitude1.getText() + "   +/-"+gpsaccuracy+"m");
                latitude1.setTextColor(Color.GREEN);
                longitude1.setTextColor(Color.GREEN);
                altitude1.setTextColor(Color.GREEN);
                save.setClickable(true);
                save.getBackground().setColorFilter(null);


            }
            else
            {
                gps1set = false;
                setgps1.setText("Set GPS 1");
                latitude1.setText(""+lat1);
                longitude1.setText(""+lon1);
                altitude1.setText(""+alt);
                latitude1.setTextColor(Color.WHITE);
                longitude1.setTextColor(Color.WHITE);
                altitude1.setTextColor(Color.WHITE);
                save.setClickable(false);
                save.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);

            }
        }

    });

1 个答案:

答案 0 :(得分:0)

如果有人来到这里......你必须致电:

save.invalidateSelf();
在更新的apis中更改背景后