Android - 调用setMyLocationEnabled后,调整键盘时调整大小的地图停止工作(true);

时间:2015-03-24 22:21:42

标签: android android-maps-v2 android-windowmanager

我遇到键盘问题时,不会在升高/降低时调整我的地图尺寸。

我有一个布局,其中有一个EditText来收集一个电子邮件地址,然后是一个framelayout,它下面有一个MapFragment。我使用的是Maps API v2

我正在使用LocationServices.FusedLocationApi.getLastLocation并且在MapFragment的onCreate中我调用了下面的内容,这样键盘会在升高/降低时缩小地图。

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

我意识到我需要获取当前位置以防最后一个已知位置旧或不可用,因此我设置了map.setMyLocationEnabled(true)并设置了它的监听器。

奇怪的是,一旦我启用它,当我抬起键盘时,地图不再缩小,而是覆盖它。我尝试将此设置为true,获取位置,并禁用它,它仍然无法正确收缩。我启用myLocation后,我也尝试设置窗口参数。

更新 - 通过进一步测试,我还发现如果我将设备旋转为横向,然后再回到纵向,键盘将正确调整地图。

为什么启用当前位置会覆盖之前设置的窗口设置?在我设置map.setMyLocationEnabled(true)之后还有其他方法可以尝试强制它吗?我并不想将它应用于整个活动,因为这只是众多片段中的一个。

0 个答案:

没有答案