您好我在google上做了一项研究,并在stackoverflow上尝试了很多关于如何将大文本拆分成多个TextView的解决方案;但是没有人给我预期的结果,甚至没有给我带来理想的结果。
我尝试了Ellipsis,Measure等来计算适合TextView的文本的长度,但是它们都因为它们不准确而失败了,并且因为我在BaseAdapter类中使用了这些方法,所以我无法; t直接使用它们,因为视图不会在膨胀时呈现,并且在渲染之前尺寸不可用,所以我不得不使用TextView.post(RUNNABLE)来获取渲染发生后TextView的宽度和高度。 / p>
正如我所说,上述方法失败了,除了准确之外,他们搞砸了一些东西,我的应用程序变得不稳定(Exception HELL)。
所以我想如果有办法,在虚拟View / ViewGroup / Activity中渲染布局(膨胀)(我不知道哪一个),然后访问TextView并测量它的大小,通过这种方式,我可以使代码更稳定,但方法可能不准确,但值得进一步更改。
所以我说清楚,我需要在虚拟视图中扩展我的XML布局,以访问子视图的宽度/高度。
更新
我现在可以使用以下代码获取大小。
public class MyViewGroup extends LinearLayout {
public MyViewGroup(Context context) {
super(context);
}
}
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
MyViewGroup vg = new MyViewGroup(this);
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
vg.setLayoutParams(new LayoutParams(width, height));
View child = (View)ViewGroup.inflate(this, R.layout.content_layout_front_fa, vg);
vg.setVisibility(View.VISIBLE);
int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);
vg.measure(measuredWidth, measuredHeight);
vg.layout(0, 0, vg.getMeasuredWidth(), vg.getMeasuredHeight());
vg.requestLayout();
TextView tv = (TextView)child.findViewById(R.id.content);
Log.e("tvW", "" + tv.getWidth());