gpt4 book ai didi

android - 触摸进出 View 时如何更改 TextView 背景颜色?

转载 作者:行者123 更新时间:2023-11-29 21:58:35 26 4
gpt4 key购买 nike

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

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

迈克

最佳答案

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

由于所有 View 都实现了 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 目标。其余的完全是默认的,所以我没有必要把它粘贴在这里。 注意 我只在模拟器和 ymmv 上测试过它,当在真实设备上尝试时,但据我所知,它应该没问题。


相关文档:

关于android - 触摸进出 View 时如何更改 TextView 背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12556472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com