我在基于Android cocos2d-x的游戏中添加了一个EditText。
"选择剪切复制粘贴"操作栏将我的EditBox向下推。
我想要的是这样的:
以下是我设置编辑框位置的代码:
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);
}
我认为问题在于我自定义了EditText布局。当操作栏显示时,我没有响应相关事件来调整我的EditText位置。
我可以听一下菜单栏显示的事件并获得正确的高度来调整我的EditText吗?
我尝试了这段代码,但它只是禁用了操作栏:
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;
}
});
答案 0 :(得分:1)
关键答案是android:windowActionModeOverlay
在res/style.xml
中定义一个新主题扩展了您的原始主题:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Black.NoTitleBar.ActionModeOverlay" parent="android:Theme.Black.NoTitleBar">
<item name="android:windowActionModeOverlay">true</item>
</style>
</resources>
或者只是在主题中添加一行<item name="android:windowActionModeOverlay">true</item>
,如果您已经定义了一行。
让您的活动使用上面AndroidManifest.xml
中定义的主题:
<manifest ...>
<application ...>
<activity
android:name="you.AppActivity"
android:theme="@style/ActionModeOverlay" >
答案 1 :(得分:0)
add styles.xml,like this:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Activity.Theme.Full" parent="@android:style/Animation.Activity">
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
change manifest like this:
<activity android:name=".AppActivity"
android:label="@string/app_name"
android:screenOrientation="sensorLandscape"
android:theme="@style/Activity.Theme.Full"
notice that the build target is 22 (i only test it) or more