Kæm*_*ker 14 android android-actionbar
我有一个ListView,我希望每行填充可用屏幕的三分之一.我可以看到状态栏,然后是一个带有slidingTabs的actionBar.我正在做这样的当前计算:
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());
}
Run Code Online (Sandbox Code Playgroud)
并设置视图高度如下:
holder.imageView.getLayoutParams().height = (height - actionBarHeight*2) / 3;
Run Code Online (Sandbox Code Playgroud)
但是列表的行有点太大了,我想这是导致它的状态栏.如何将其高度添加到我的计算中?
Kæm*_*ker 10
根据@rasmeta的回答,我制作了这个代码并且它可以解决问题.我的行现在恰好是可用屏幕的三分之一.以下是获取状态栏高度的方法:
int resource = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resource > 0) {
statusBarHeight = context.getResources().getDimensionPixelSize(resource);
}
Run Code Online (Sandbox Code Playgroud)
并且每行高度的计算如下:
holder.imageView.getLayoutParams().height = (screenHeight - statusBarHeight - actionBarHeight*2) / 3;
// actionBarHeight * 2 because the tabs have the same height as the actionBar.
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用此代码:
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
如此处所述:https : //stackoverflow.com/a/3410200/1763138
请尝试使用此解决方案并告诉我们它是否有效。;)
| 归档时间: |
|
| 查看次数: |
11550 次 |
| 最近记录: |