您的位置:首页 > 移动开发 > Android开发

Android 处理窗口控件大小,形状,像素等工具

2016-04-21 15:29 441 查看
/**

* 处理窗口控件大小,形状,像素等工具

*

* @author chen.lin

*

*/

public class UITools {

/**

* 把像素转化为dp

*

* @param context

* @param px

* @return

*/

public static int px2dip(Context context, float px) {

float density = context.getResources().getDisplayMetrics().density;

return (int) (px * density + 0.5f);

}

/**
* 设置窗体的宽度
* @param context
*/
public static void setWinWidth(Activity context) {
DisplayMetrics metric = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metric);
LayoutParams p = context.getWindow().getAttributes();
p.width = (int) (metric.widthPixels * 0.8);
context.getWindow().setAttributes(p);
}

/**
* 设置弹出窗口中listview的高度
*
* @param listView
*/
public static void setListViewHeight(ListView listView) {
// 获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); // 计算子项View 的宽高
totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()获取子项间分隔符占用的高度
// params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: