Java 获取文本视图的高度
我有一些文本将放在Java 获取文本视图的高度,java,android,textview,Java,Android,Textview,我有一些文本将放在TextView中。我使用setText()实现了这一点 现在我需要在TextView中找到文本所占的行数或高度。我尝试使用getHeight(),但它总是返回0 是否仍然可以获取TextView中文本的高度?因为只有在布局完成后才知道此大小,一种方法是创建自定义文本视图并使用onSizeChanged方法。另一种方式是: final TextView tv = (TextView) findViewById(R.id.myTextView); ViewTree
TextView
中。我使用setText()
实现了这一点
现在我需要在TextView
中找到文本所占的行数或高度。我尝试使用getHeight()
,但它总是返回0
是否仍然可以获取
TextView
中文本的高度?因为只有在布局完成后才知道此大小,一种方法是创建自定义文本视图并使用onSizeChanged方法。另一种方式是:
final TextView tv = (TextView) findViewById(R.id.myTextView);
ViewTreeObserver vto = tv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Toast.makeText(MyActivity.this, tv.getWidth() + " x " + tv.getHeight(), Toast.LENGTH_LONG).show();
tv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
我在这里找到了这样的代码:正如John指出的,您无法在setText之后立即获得高度。我不确定在TextView本身上使用getHeight()会对您有多大帮助。视图的高度不仅取决于视图中可见文本的高度,还取决于TextView所在的视图组/布局。如果viewgroup告诉TextView最大化高度,则getHeight()将不起任何作用,即使您等到文本渲染之后 我认为有很多方法可以做到这一点:
现在,您将拥有边界中的维度。现在可以使用paint.breakText查看一行上可以容纳多少文本。可能太麻烦了,而且(在我未经培训的眼中)无法保证与TextView使用的逻辑相同。在渲染视图之前,无法获取视图的高度,这就是为什么在设置文本后检查高度时,总是返回0。为什么你需要知道高度?请解释更多你想要实现的目标。事实上,我已经开发了一个应用程序,可以一页一页地显示文本和图像(就像电子书阅读器一样)(我的意思是它不应该包含任何滚动条)。。所以,当我有大量的文本要放的时候,我需要知道文本在屏幕上占据了多少空间,这样它就可以放在屏幕上了..Kread。。你能举一些例子来说明如何对TextView进行子类化,以便在子类中使用主类中的TextView对象吗?好的,你有一个公共类MyText扩展了TextView{OVERRIDE METHODS HERE},在主类中你做了一个“MyText TextView=new MyText(this);”而不是“TextView TextView=new TextView(this);”。如果您想使用XML布局,我建议您阅读(实际上,即使是在Java中创建内容,也要阅读)。。但是onSizeChanged方法最终会被调用!!因此,在应用程序的中间不能使用GETLICANECUT!我是说。。如果我想用textview.getLineCount()初始化一个变量,即使在设置了textview.getLineCount()之后,变量值仍然是0,直到结束。上面代码的问题是。。文本视图的高度只能在代码末尾实现。。我不能把它放在中间!!我使用一个变量来存储高度,并在onGlobalLayout()中使用tv.getHeight()初始化该变量。。但变量的值始终为0,直到结束。。最后,它改变了文本的高度……这段代码帮助我找到了TextView的“宽度”和“高度”。