1

这必须是一个非常简单的修复,但我似乎无法弄清楚。我已经让我的程序将背景颜色更改为更改,并使用and更改onClickonTouch 。但我需要它在触摸屏幕和进出. 我需要它像 mouseOver/mouseOut 事件一样运行。有没有办法在android上做到这一点?还是我坚持,行动必须从内部开始?ACTION_DOWNACTION_UPTextViewonTouchTextView

现在我设置了onTouchListenerTextView本身。我应该将它设置在其他地方,然后检查 x 和 y 是否在Textview? 还是我应该使用另一个事件侦听器?我是Android新手,任何帮助将不胜感激。谢谢。

麦克风

4

1 回答 1

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 的线性布局和一个带有 IDcont的视图(TextView在您的情况下为 a )target。其余的完全是默认的,所以我把它贴在这里没有意义。请注意,我只在模拟器和ymmv上测试了它,但在真实设备上尝试它时,但据我所知,它应该没问题。


相关文件:

于 2012-09-23T22:14:41.303 回答