触摸进出视图时如何更改TextView背景颜色?

时间:2012-09-23 21:34:44

标签: android textview ontouchlistener

这必须是一个非常简单的修复,但我似乎无法弄明白。我有我的程序更改背景颜色以更改onClick,并使用ACTION_DOWNACTION_UP更改onTouch。但我需要它来改变触摸屏幕和进出TextView时的颜色。我需要它像mouseOver / mouseOut事件一样运行。有没有办法在Android上做到这一点?还是我坚持onTouch,行动必须从TextView开始?

现在我在onTouchListener上设置了TextView。我应该在其他地方设置它,然后检查x和y是否在Textview范围内?或者我应该使用另一个事件监听器吗?我是Android新手,任何帮助将不胜感激。感谢。

麦克

1 个答案:

答案 0 :(得分:2)

我会在您的应用程序上实现OnTouchListener,然后在onTouch方法上,继续检查触摸事件的当前位置是否在边界框的范围内观点。如果是,则应用新背景,如果不应用原始背景。

由于所有视图都实现setBackgroundColor我没有对TextView进行任何转换,但该示例应该足够了,至少作为进一步开发应用程序的起点。

完整的代码如下:

public class Main extends Activity implements OnTouchListener{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //Set the listener for the parent/container view
        findViewById(R.id.cont).setOnTouchListener(this);

        //Get a hold of the view and create the Rect for the bounds
        View target = findViewById(R.id.target);
        Rect b = new Rect();

        //Get the bounding box of the target view into `b`
        target.getGlobalVisibleRect(b);
    }

    public boolean onTouch(View v, MotionEvent event) {

        //Check if it's within the bounds or not
        if(b.contains((int)event.getRawX(),(int) event.getRawY())){
            target.setBackgroundColor(0xffff0000);
        }else{
            target.setBackgroundColor(0xff000000);
        }

        //You need to return true to keep on checking the event
        return true;
    }
}

对于上一代码的用户界面,它只是一个带有ID cont的线性布局和一个ID为TextView的视图(在您的情况下为target)。剩下的完全是默认的,所以我没有必要在这里粘贴它。 注意我只在模拟器和 ymmv 上进行了测试,但在我想到的时候,它应该没问题。

<小时/> 相关文档: