如何将大字符串分页/拆分为多个TextViews / Views

时间:2015-05-09 19:43:32

标签: android layout pagination textview render

您好我在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());

0 个答案:

没有答案