关闭

Android TextView的高度

标签: textview高度
3326人阅读 评论(1) 收藏 举报
分类:

有些时候TextView里面的文字太多不要全部显示出来,只需要在某些特定的时候显示出来。

比如在xml文件中设置android:maxLines="2",输入的数据最多只能开到2行,多余的数据需要重新设置maxLine的值后才能显示。

 TextView设置完setMaxLines后,通过TextView.getHeight方法获取的是当前行数的高度,而非文字完全显示的高度。

如果需要得到全部的TextView高度,这个时候可以用一个函数取得实际的文本高度。

private int getTextViewHeight(TextView pTextView) {
		Layout layout = pTextView.getLayout();
		int desired = layout.getLineTop(pTextView.getLineCount());
		int padding = pTextView.getCompoundPaddingTop() + pTextView.getCompoundPaddingBottom();
		return desired + padding;
	}

自己做了一个Demo:

package com.example.textviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
	TextView textView,lines;
	Button btn;
	LinearLayout linearLayout;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		linearLayout = (LinearLayout) findViewById(R.id.linearlayout);
		textView = (TextView) findViewById(R.id.show);
		textView.setText("aaaaaaaaaaaaaaaassssssssssssssssssssss" +
				"bbbbbbbbbbbbbbbgggggggggggggggggggg" +
				"dddddddddddddddhhhhhhhhhhhhhhhhhhhh" + 
				"tttttttttttttttttoooooooooooooooooo");
		btn = (Button) findViewById(R.id.btn);
		lines = (TextView) findViewById(R.id.lines);
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				textView.setMaxLines(9);
				//lines.setText(String.valueOf(textView.getHeight()));//第一次点击52,第二次点击101
				lines.setText(String.valueOf(getTextViewHeight(textView)));//101
			}
		});
		linearLayout.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//lines.setText(String.valueOf(textView.getHeight()));//52
				lines.setText(String.valueOf(getTextViewHeight(textView)));//101
			}
		});
	}
	/**
	 * 获取TextView文本的实际高度
	 * */
	private int getTextViewHeight(TextView pTextView) {
		Layout layout = pTextView.getLayout();
		int desired = layout.getLineTop(pTextView.getLineCount());
		int padding = pTextView.getCompoundPaddingTop() + pTextView.getCompoundPaddingBottom();
		return desired + padding;
	}
}

一:设置为:lines.setText(String.valueOf(getTextViewHeight(textView)));

初始界面:


点击屏幕后:


点击显示按钮:


二:设置为:lines.setText(String.valueOf(textView.getHeight()));

初始界面和第一次相同:

点击屏幕后:


点击显示按钮后:


再次点击屏幕或者显示按钮后:


0
0
查看评论

Android 获取textView高度的N种方式

TextView在绘制完成之前不管是getHeight方法还是getMeasuredHeight方法拿到的都是0.然而有些地方需要在TextView绘制完毕后就拿到TextView的高度甚至行数,本文给出了多种方法在绘制前和绘制后测量TextView高度,并展示了LinearLayout包裹Text...
  • lvshaorong
  • lvshaorong
  • 2016-04-06 20:09
  • 10647

Android 获取View的高度或TextView的行数, 实现自适应的textview

大家都遇到过项目中需要获取文本的高度或者行数
  • sk719887916
  • sk719887916
  • 2014-10-14 11:12
  • 2465

安卓中计算 TextView 的宽高、打点

本文讲述如何测量文本的宽高,以及在自定义控件中如何对文本进行换行和打点等操作。
  • zhaizu
  • zhaizu
  • 2016-06-20 21:19
  • 2079

Android自定义TextView根据控件高度和宽度,解决字体适配问题

出现原因:项目需要的设备广,设计到了手机,平板,大电视,无数的分辨率,无数的尺寸造成的屏幕密度;这就很伤了;如果还是使用资源文件values来适配的话,那烧香都怕香不够,所以引发了一下的连环事故; 那么没思路就跑到了github上,果然发现了类似的开源, AutoFitTextView ...
  • qq_27489007
  • qq_27489007
  • 2017-09-22 15:23
  • 2421

根据文本内容的长度动态的设置TextView的高度

在做Android开发中,经常需要根据文本内容的长度和手机屏幕的大小动态的设置TextView的高度。设置TextView的高度后,再设置TextView可以滑动,就可以展示完整的文本,但是TextView的滑动效果不流畅;可以给TextView外层包一个ScrollView,通过设置ScrollV...
  • kg_2012
  • kg_2012
  • 2017-06-28 20:39
  • 801

TextView 设置行高并垂直居中

需求: TextView 多行文本可以设置行高(如20dp),每行文本垂直居中。效果如下:实现思路:通过设置 TextView 的 lineSpacingExtra 和 lineSpacingMultiplier 来实现。 lineSpacingMultiplier 的值为行间距的倍数,默认值为 1...
  • u011282069
  • u011282069
  • 2016-07-22 22:05
  • 2717

TextView的高度测量问题。

最近被TextView的高度测量问题搞得好烦,最终在http://blog.csdn.net/tianlan996/article/details/50408169 这篇博客看过后才搞懂原因,其实看过这篇文章后才想起 以前看过的视频里也有提到这个问题,只是我忘了,所以才走了一大段弯路,记录一下,给自...
  • tinderliang
  • tinderliang
  • 2016-12-19 15:03
  • 1119

Android中TextView限制行数及末尾已省略号显示

Android中TextView限制行数及末尾已省略号显示 <TextView android:layout_width="match_parent" android:layout_height="wrap_content&q...
  • qq_31403303
  • qq_31403303
  • 2016-05-26 13:28
  • 16698

TextView限制多行,超出内容时用省略号显示

我们都知道 TextView单行省略号表示直接写两个属性就可以了android:singleLine="true" android:ellipsize="end"现在singleLine属性过时了,现在提倡限制行数用maxLines,设置Intenger类型数...
  • Andy_l1
  • Andy_l1
  • 2017-06-15 10:13
  • 1013

Android绘制文本之获取宽高笔记

在自定义View的需要绘制文字时候,经常要考虑到文本的中心位置,这就需要计算并获取整个文本的宽度和高度,为了以后的使用方便,故这里记录一下。 我们先看图了解一下字体基准线: 上面所有的属性都被封装在FontMetrics类中,通过它可以获取并计算文本的宽高,大体翻译一下,可能不准确。 publ...
  • eyishion
  • eyishion
  • 2016-07-05 00:03
  • 6138
    个人资料
    • 访问:290394次
    • 积分:4004
    • 等级:
    • 排名:第9346名
    • 原创:329篇
    • 转载:17篇
    • 译文:10篇
    • 评论:35条
    博客专栏
    最新评论