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

今天有一个需求。

因为是在地图开发的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("距离:");//“距离:”的宽度
					int	margin=DensityUtil.dip2px(_activity, 30);//左右空余的距离30dp
					float scale=_activity.getResources().getDisplayMetrics().density;//屏幕密度
					//如果超出则把宽度设置为限制宽度
					int maxWidth=(int) (width-(addDesWidth+margin)*scale);
					if(addWidth*scale>=maxWidth){
						baidu_map_pop_address.setMaxWidth(maxWidth);
					}





你可能感兴趣的:(入门Android开发--基础--动态显示TextView宽度)