我在 Cocos2d 游戏中使用 Android EditText 控件。
其他都很正常,但是在我选中 EditBox 中的文字的时候, "Select Cut Copy Paste" 动作条出现在屏幕上方,同时我的 EditBox 文字位置下移,如下图:
[![compare][1]][1]
我肯定不需要这个的结果,我想要如下,当我选中的时候,虽然上方出现动作条,但是我的 EditBox 应该保持再原来的位置,比如下图这样:
[![enter image description here][2]][2]
这里是我使用的 EditBox 设置位置的代码:
```java
public void setEditBoxViewRect(int left, int top, int maxWidth, int maxHeight) {
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
layoutParams.leftMargin = left;
layoutParams.topMargin = top;
layoutParams.width = maxWidth;
layoutParams.height = maxHeight;
layoutParams.gravity =
Gravity.TOP | Gravity.LEFT;
this.setLayoutParams(layoutParams);
}
```
完整代码见 [GitHub: cocos2d/cocos2d-x Cocos2dxEditBox.java](
https://github.com/cocos2d/cocos2d-x/blob/v3/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxEditBox.java)
当前我的 Workaround 是这样的,关掉 ActionBar :
```java
edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
});
```
我猜问题的原因是不是因为我设置的是绝对坐标,没有使用布局的原因。当然在游戏里希望直接的位置设定。那么我能不能在入上面的 workaround 的 onCreateActionMode 获得 ActionBar 的高度,然后临时调整 EditBox 的位置呢?或者一般大家遇到这样情况的时候是怎么解决的呢?
[1]:
http://i.stack.imgur.com/3kAk0.png [2]:
http://i.stack.imgur.com/qhOOb.png
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/237051
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.