android-如何获取textview的高度?

问题描述

如何获取textview的高度?

layout 如下:

<LinearLayout
    android:id="@+id/layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

我用的代码如下:

TextView title = (TextView)findViewById(R.id.title);
title.setText("ABCDE...");
title.setTextSize(20);
TextView info = (TextView)findViewById(R.id.info);
info.setText("abcde...");
info.setTextSize(16);
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);

我想获取 TextView title的高度和 info,或者说layout的高度。如何实现?

解决方案

我是参考别人的方法,你试试看
在onCreate函数中,View还未被展开,是无法获得高度的。
所以可以对TextvView注册一个监听者:
1.ViewTreeObserver vto = tv.getViewTreeObserver();
2. vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
3. public void onGlobalLayout() {
4.

5. heigh = appDescription.getHeight();
6.

7. tv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
8. }
9. });

如下代码,既可以获取高度,还可以设置高度。
1.TextView v = (TextView) findViewById(R.id.sometext);
2.LayoutParams lp = v.getLayoutParams();
3.lp.height = 50;
4.v.setLayoutParams(lp);

解决方案二:

你就是回调方法没找好, 在 Activity的 onFocusChanged 回调里就OK了。

解决方案三:

你可以试试 getLineHeight() 方法。比如:

title.getLineHeight();
info.getLineHeight();

解决方案四:

addOnGlobalLayoutListener似乎不能实时获取高度,要在显示后,如果textview在setText后必须马上知道高度怎么做?

解决方案五:

这个方法很好,在view没有绘制的时候也有值。谢谢

时间: 2024-08-30 14:43:46

android-如何获取textview的高度?的相关文章

Android有效获取状态栏(StatusBar)高度的方法_Android

本文实例讲述了Android有效获取状态栏(StatusBar)高度的方法.分享给大家供大家参考,具体如下: 碰到了需要获取状态栏高度的问题. 就像android后期版本,无法直接退出一样.找了一些方法来获取状态栏高度,结果都是为0. 还好,牛人是很多的,当时,找到一段代码,能够有效的获取状态栏的高度.特此记录,备忘,以及供大家参考使用: Class<?> c = null; Object obj = null; Field field = null; int x = 0, sbar = 0;

Android利用反射获取状态栏(StatusBar)高度

MainActivity如下: package cc.teststatusbarheight; import java.lang.reflect.Field; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.co

关于android动态获取listview高度的问题

问题描述 关于android动态获取listview高度的问题 最近在拿一个聊天机器人的对话板块来练手,用到了一个listview动态设定高度的问题.结果改了很多时候仍有一个bug:当scrollview开始翻页之后,每次的发送在下面都会有一段空白.当发送的消息多了之后,下面明显会多出一段空白区. 我用setenable(true)试过,点不了,所以应该不是多出来的item,但是也不知道是什么,但应该是高度获取错误,可是代码也是网上通用的,求指导,求修改,赋源代码. 谢谢.

Android编程获取通知栏高度的方法_Android

本文实例讲述了Android编程获取通知栏高度的方法.分享给大家供大家参考,具体如下: 这里通过反射机制获取通知栏高度 通知栏高度写在dimen文件中: public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName(&qu

Android OnCreate()中获取控件高度与宽度两种方法详解_Android

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me

Android如何获取屏幕、状态栏及标题栏的高度详解

前言 本文主要给大家介绍了关于Android获取屏幕.状态栏及标题栏高度的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 在开始之前,先来看一张图: 绿色区域:屏幕区域 蓝色区域:状态栏区域 红色区域:标题栏区域 黄色区域:view绘制区域 1.Android手机屏幕的高度 整个手机使用发亮,不使用变黑的部分,绿色区域 获取屏幕的高度方法一 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getD

Android编程获取通知栏高度的方法

本文实例讲述了Android编程获取通知栏高度的方法.分享给大家供大家参考,具体如下: 这里通过反射机制获取通知栏高度 通知栏高度写在dimen文件中: public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName(&qu

Android中获取状态栏高度的两种方法分享

前言 最近在做一个关于FAB的功能的时候需要获取状态栏的高度,在网上查了很多种方法,下面是选出的比较合理的两个方法.主要参考stackoverflow的这篇问答:http://stackoverflow.com/questions/3407256/height-of-status-bar-in-android 方法一: private double getStatusBarHeight(Context context){ double statusBarHeight = Math.ceil(25

Android OnCreate()中获取控件高度与宽度两种方法详解

Android OnCreate()中获取控件高度与宽度 试过在OnCreate()中获取控件高度与宽度的童鞋都知道,getWidth()与getHeight()方法返回是0,具体原因 看一下Activity的生命周期 就会明白. 上代码: 方法一: int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0,View.Me