我为我的应用程序创建了一个自定义日历,如下所示:
为了制作日历,我使用了一个带有自定义适配器的GridView,其中我设置了每个单元格的高度,如下所示:
int other = 56 + 30 + 50 + statusBarHeight;
currCell.getLayoutParams().height = (screenHeight - other) / MAX_ROW;
其中:
56是工具栏的高度(在布局文件中的dp中设置);
30是显示天数名称的布局的高度(在布局文件中的dp中设置);
50是底栏的高度(在布局文件中的dp中设置);
statusBarHeight是状态栏的高度,用:
计算statusBarHeight = 0;
int statusBarId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (statusBarId > 0)
statusBarHeight = getResources().getDimensionPixelSize(statusBarId);
screenHeight是屏幕的高度,用:
计算DisplayMetrics metrics = new DisplayMetrics();
((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay().getMetrics(metrics);
screenHeight = metrics.heightPixels;
MAX_ROW等于7.
另一个问题是,当我在另一部手机上试用该应用程序时,GridView仍然不适合屏幕,但方式不同。例如,图片中的手机是Honor9。在LG G4上,网格比屏幕长,而在模拟的Nexus 5X上则更短。
我正在寻找一种方法,以编程方式设置单元格的高度,使网格完美地适合每个设备上的屏幕。
提前致谢:)