Android计算string在TextView所占的宽高

给定一个区域。计算横向上可以放几个字,纵向上可以放几个字,然后计算可以容纳的宽度;然后计算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 + "");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值