我有一个 ListView,我希望每一行填充可用屏幕的三分之一。我有可见的状态栏,然后有一个带有滑动选项卡的操作栏。我正在做这样的当前计算:
height = context.getResources().getDisplayMetrics().heightPixels;
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,context.getResources().getDisplayMetrics());
Log.d("actionBarHeigth", actionBarHeight.toString());
}
并像这样设置视图高度:
holder.imageView.getLayoutParams().height = (height - actionBarHeight*2) / 3;
但列表的行有点太大,我猜这是状态栏造成的。如何将它的高度添加到我的计算中?
根据 @rasmeta 的回答,我编写了这段代码,它起到了作用。我的行现在正好是可用屏幕的三分之一。获取状态栏高度的方法如下:
int resource = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resource > 0) {
statusBarHeight = context.getResources().getDimensionPixelSize(resource);
}
每行高度的计算如下:
holder.imageView.getLayoutParams().height = (screenHeight - statusBarHeight - actionBarHeight*2) / 3;
// actionBarHeight * 2 because the tabs have the same height as the actionBar.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)