给定一个区域。计算横向上可以放几个字,纵向上可以放几个字,然后计算可以容纳的宽度;然后计算content的宽度,对比总宽度,得出是否可以放置
// 获取屏幕宽高,获取单个文字的高度、宽度;根据现有的尺寸,来判断可以容纳多少个字,超出就使用第二种布局
WindowManager wm = (WindowManager) mContext
.getSystemService(Context.WINDOW_SERVICE);
//148.94469 32.8125
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
Log.e("屏幕高度", height + "===" + width);
//所有文字的宽度
TextView textView = (TextView) convertView.findViewById(R.id.text);
TextPaint textPaint = textView.getPaint();
float textTotalPaintWidth = textPaint.measureText(mList.get(position));
//单个文字的宽度
float textPaintWidth = textPaint.measureText("测");
//这里只是一个例子,如a/.这两个的宽度就不一定相同
//单个文字的高度
Paint.FontMetrics fontMetrics = textPaint.getFontMetrics();
float textheight = fontMetrics.bottom - fontMetrics.top;
Log.e("单个文字所需的宽高", textPaintWidth + ":====" + textheight);
//计算一共可以容纳多少文字
//存在图片和文字,判断谁高,谁高外层布局就和他一样高
float totalHeight = 0;
if (textheight > 0.01 * height) {
float xt = (float) (0.07 * height - 2 * textheight);
totalHeight = xt;
} else {
float xt1 = (float) (0.07 * height - 2 * 0.01 * height);
totalHeight = xt1;
}
Log.e("一共的高度", totalHeight + "");
//可以容纳的宽度
int totalWidth = (int) (width - (0.06 * height));
Log.e("一共可以容纳的宽度", totalWidth + "");
textView.setText(mList.get(position));
int heng = (int) (totalWidth / textPaintWidth);
int zong = (int) (totalHeight / textheight);
int toal = heng * zong;
Log.e("横向上可以容纳的字数", heng + "");
Log.e("纵向上可以容纳的字数", zong + "");
Log.e("一共可以容纳的字数", toal + "");