Android Google 地图:针对不同的设备尺寸充分调整地图填充
Android Google Maps: adequately adjust map padding for different device sizes
我的 MapsFragment 前面有一个工具栏,因此需要相应地调整地图控件的填充。但是,当我使用 screenLayout 时,各种平板设备之间仍然存在差异。在 SCREENLAYOUT_SIZE_XLARGE 中,屏幕上的输出仍然存在差异。在下面的屏幕截图中查看 "My Location"-按钮之间的区别
我应该如何为“我的位置”按钮计算正确的 MapPadding?
@Override
public void onMapReady(GoogleMap googleMap) {
gMap = googleMap;
int screenSize = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
System.out.println("screenSize: " + screenSize);
if (screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
googleMapPadding = 75; //125 for other tablet
} else if (screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE) {
googleMapPadding = 100;
} else {
googleMapPadding = 175;
}
gMap.setPadding(0, googleMapPadding, 0, 0);
//other stuff
}
基本上就是计算actionbar的高度。
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
googleMapPadding = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
gMap.setPadding(0, googleMapPadding, 0, 0);
我的 MapsFragment 前面有一个工具栏,因此需要相应地调整地图控件的填充。但是,当我使用 screenLayout 时,各种平板设备之间仍然存在差异。在 SCREENLAYOUT_SIZE_XLARGE 中,屏幕上的输出仍然存在差异。在下面的屏幕截图中查看 "My Location"-按钮之间的区别
我应该如何为“我的位置”按钮计算正确的 MapPadding?
@Override
public void onMapReady(GoogleMap googleMap) {
gMap = googleMap;
int screenSize = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
System.out.println("screenSize: " + screenSize);
if (screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
googleMapPadding = 75; //125 for other tablet
} else if (screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE) {
googleMapPadding = 100;
} else {
googleMapPadding = 175;
}
gMap.setPadding(0, googleMapPadding, 0, 0);
//other stuff
}
基本上就是计算actionbar的高度。
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
googleMapPadding = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
gMap.setPadding(0, googleMapPadding, 0, 0);