Android EditText按操作栏向下推

时间:2015-11-16 15:38:27

标签: android layout android-actionbar android-edittext

我在基于Android cocos2d-x的游戏中添加了一个EditText。

"选择剪切复制粘贴"操作栏将我的EditBox向下推。

compare

我想要的是这样的:

enter image description here

以下是我设置编辑框位置的代码:

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;
        }
    });

2 个答案:

答案 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