2015-11-16 2 views
0

Я добавляю EditText в свою игру на основе Android cocos2d-x.Android 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; 
     } 
    }); 

ответ

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" > 
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 
Смежные вопросы