入门Android开发--基础--动态显示TextView宽度

来源:互联网 发布:线切割编程软件教程 编辑:程序博客网 时间:2024/06/03 17:29

今天有一个需求。

因为是在地图开发的view中,过长的时候会延伸出屏幕外部。所以需要判断长度,并换行。

Rect bounds = new Rect();String text = "Hello World";TextPaint paint;paint = findViewById(R.id.hello_world).getPaint();paint.getTextBounds(text, 0, text.length(), bounds);int width = bounds.width();
//float addWidth = paint.measureText(add);  //或者这种方法也可以直接获取

注意TextPaint ,开始使用Paint的时候,需要获取具体的painter而不能直接new一个。会判断混乱(部分获取的长度明显不正确)

//Paint paint= new Paint();Paint paint= textView.getPaint();


<span style="white-space:pre"></span>//获取屏幕宽度DisplayMetrics metric = new DisplayMetrics();_activity.getWindowManager().getDefaultDisplay().getMetrics(metric);int width = metric.widthPixels; //获取字符串宽度//Paint paint= new Paint();Paint paint= baidu_map_pop_address.getPaint();//float f=paint.getTextSize(); //默认字体大小//float addWidth = paint.measureText(add);  //另一种方法Rect bounds = new Rect();paint.getTextBounds(add, 0, add.length(), bounds);int addWidth = bounds.width();//设置限制宽度float addDesWidth=paint.measureText("距离:");//“距离:”的宽度intmargin=DensityUtil.dip2px(_activity, 30);//左右空余的距离30dpfloat scale=_activity.getResources().getDisplayMetrics().density;//屏幕密度//如果超出则把宽度设置为限制宽度int maxWidth=(int) (width-(addDesWidth+margin)*scale);if(addWidth*scale>=maxWidth){baidu_map_pop_address.setMaxWidth(maxWidth);}





0 0