在练习应用程序的其中一个视图中,我尝试以编程方式执行文本选择.
我能够(以编程方式)输入"文本选择模式",它由视图左上角的CursorControllers(AKA句柄)可视地指示.
如果我手动拖动右边的CursorController,然后再次单击它(在模拟器中),它按预期工作(完美),显示一条简短的消息:"文本复制到剪贴板".
但是当我尝试以编程方式拖动正确的CursorController时,没有任何反应.
我尝试这样做的方法是模拟MotionEvent.在视图中,我打电话给:
event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0);
MainActivity.onTouch(this, event);
Run Code Online (Sandbox Code Playgroud)
在MainActivity中我当然实现了OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent event) { // called BEFORE button's onTouchEvent()
Log.v("MainActivity::onTouch()", describeEvent(v, event));
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,仅仅从onTouch返回'false',Android就会继续寻找另一个UI对象来使用MotionEvent对象,最终到达我的视野.
为什么不这样呢?
我必须遗漏一些非常基本的东西......
Android上的地图标记存在问题,似乎无法修复它.解决方法是点击地图标记3次,它将正确打开带有图像的标注/注释.
我怎么能以编程方式做到这一点?每次用户点击时,我想点击标记3次.
<MapView.Marker
key={marker.key}
coordinate={marker.latlng}
title={marker.title}
description={marker.description}
>
<MapView.Callout style={styles.annotation}>
<Image
key={marker.key}
source={{ uri: marker.image }}
style={styles.thumbnail}
/>
</MapView.Callout>
</MapView.Marker>
Run Code Online (Sandbox Code Playgroud)