这必须是一个非常简单的修复,但我似乎无法弄明白。我有我的程序更改背景颜色以更改onClick
,并使用ACTION_DOWN
和ACTION_UP
更改onTouch。但我需要它来改变触摸屏幕和进出TextView
时的颜色。我需要它像mouseOver / mouseOut事件一样运行。有没有办法在Android上做到这一点?还是我坚持onTouch
,行动必须从TextView
开始?
现在我在onTouchListener
上设置了TextView
。我应该在其他地方设置它,然后检查x和y是否在Textview
范围内?或者我应该使用另一个事件监听器吗?我是Android新手,任何帮助将不胜感激。感谢。
麦克
答案 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 上进行了测试,但在我想到的时候,它应该没问题。