问题描述
- Android 如何根据区域高度动态计算最匹配的字体大小
-
Android 如何根据区域高度动态计算最匹配的字体大小;最近项目遇到一个需求,给一个已知宽高的区域,在这个区域中绘制文本信息,需要根据区域高度计算字体大小以达到文字的高度刚好是区域的高度。自己找了一些资料,基本都是根据文本内容计算高度的,反过来则没有。
解决方案
1、动态设置TextView的width
如果在xml中使用TextView,并且设置了textSize属性,若想在Java代码中动态的设置TextView的长度,
而不是在xml直接写死TextView的Width属性,可以通过TextView的getPaint()获得TextPaint对象,通过这
个TextPaint对象我们就可以获取到当前TextView设置的text的size, 这时如果想控制TextView中放置的text
的字数,就可以通过重新设置TextView的width属性来实现。
例如:
int textSize = (int)pushNewsText.getPaint().getTextSize(); //获得当前textView的text size大小
2、Java代码中动态添加子view到RelativeLayout布局中:
LayoutParams childParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ImageView firstView = new ImageView(context);
firstView.setId(zhangView.getId() + 1);
childParams .addRule(RelativeLayout.CENTER_VERTICAL);
childParams .addRule(RelativeLayout.LEFT_OF, targetView.getId()); //设置firstView位于targetView的左侧
childParams .rightMargin = 10;
firstView.setLayoutParams(childParams );
parentView.addView(firstView); //添加到父View中