Окно Android WindowManager не перемещается после видимости клавиатуры

Окно, отображаемое на экране

public class FlatingViewService extends Service{
 public static WindowManager windowManager;
 ...
 windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
 ...
 //Floating View Layout
 li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
 myView = li.inflate(R.layout.product_response_card, null);
 name = (TextView) myView.findViewById(R.id.name);
 editTextName = (TextView) myView.findViewById(R.id.editTextName);
 ...
 //Layout Parameters
 ...
 response_card_params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;

Когда пользователь пытается ввести какой-либо текст в editText, появляется клавиатура, но поверх текста редактирования. Таким образом, пользователь ничего не видит.

Какая проблема?

2 ответа

Решена проблема.

//Layout Parameters for Product response card
 layout_params = new WindowManager.LayoutParams(
 WindowManager.LayoutParams.MATCH_PARENT,
 WindowManager.LayoutParams.WRAP_CONTENT,
 WindowManager.LayoutParams.TYPE_PHONE,
 WindowManager.LayoutParams.FLAG_DIM_BEHIND,
 PixelFormat.TRANSLUCENT);
 layout_params.gravity = Gravity.LEFT;
 layout_params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN;

Я использовал WindowManager.LayoutParams.TYPE_SYSTEM_ALERT вместо WindowManager.LayoutParams.TYPE_PHONE

И WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN


Начиная с API 19 опций SOFT_INPUT_ADJUST_PAN и SOFT_INPUT_ADJUST_RESIZE не затрагивают окна с типами TYPE_SYSTEM_ALERT и TYPE_TOAST (и TYPE_VOLUME_OVERLAY для API 21 и 22, в API 23 TYPE_VOLUME_OVERLAY удалены из этого списка).

Вместо использования TYPE_SYSTEM_ALERT нужно использовать TYPE_PHONE.

licensed under cc by-sa 3.0 with attribution.