Android TextView的高度

标签: textview 高度
3417人阅读 评论(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()));

初始界面和第一次相同:

点击屏幕后:


点击显示按钮后:


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


查看评论

动态设置TextView高度和宽度

直接上代码: final LayoutParams lp = mTextView.getLayoutParams(); width += 5; lp.width = width; lp.height...
  • WeLoveSunFlower
  • WeLoveSunFlower
  • 2012-10-08 12:00:56
  • 17183

Android 获取textView高度的N种方式

TextView在绘制完成之前不管是getHeight方法还是getMeasuredHeight方法拿到的都是0.然而有些地方需要在TextView绘制完毕后就拿到TextView的高度甚至行数,本文...
  • lvshaorong
  • lvshaorong
  • 2016-04-06 20:09:30
  • 11543

Android-解决TextView上下留白问题

问题 为什么TextView默认上下留空? 设置includeFontPadding参数,是否有效去除上下留空? includeFontPadding参数比较图 源码分...
  • daiyibo123
  • daiyibo123
  • 2016-10-14 00:11:16
  • 4160

Android获取TextView控件高度(其它View类似,TextView有特殊之处)

经过查阅资料和实验,这里推荐两种方法,这两种方法有不同的应用场景。 方法一: int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, View.M...
  • tianlan996
  • tianlan996
  • 2015-12-26 13:43:21
  • 2894

android动态获取TextView的属性(width、height、line)

Android动态获取TextView的属性(width、height、line)在某些的androidUI设计中需要动态得到TextView、EditText的属性,比如宽度高度、行数等属性,这种类...
  • DongDonggogo
  • DongDonggogo
  • 2016-10-18 09:58:46
  • 737

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

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

Android 获得view的宽和高

在oncreate()中利用view.getWidth()或是view.getHeiht()来获取view的宽和高,看似没有问题,其实他们去得值是0,并不是你想要的结果? 这是为什么呢? ...
  • yangdeli888
  • yangdeli888
  • 2014-05-09 16:15:45
  • 55413

Android计算string在TextView所占的宽高

// 获取屏幕宽高,获取单个文字的高度、宽度;根据现有的尺寸,来判断可以容纳多少个字,超出就使用第二种布局 WindowManager wm = (WindowManager) mCo...
  • shb2058
  • shb2058
  • 2017-04-26 22:37:58
  • 774

TextView 设置行高并垂直居中

需求: TextView 多行文本可以设置行高(如20dp),每行文本垂直居中。效果如下:实现思路:通过设置 TextView 的 lineSpacingExtra 和 lineSpacingMult...
  • u011282069
  • u011282069
  • 2016-07-22 22:05:55
  • 3502

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

出现原因:项目需要的设备广,设计到了手机,平板,大电视,无数的分辨率,无数的尺寸造成的屏幕密度;这就很伤了;如果还是使用资源文件values来适配的话,那烧香都怕香不够,所以引发了一下的连环事故; ...
  • qq_27489007
  • qq_27489007
  • 2017-09-22 15:23:50
  • 3094
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 30万+
    积分: 4198
    排名: 9106
    博客专栏
    最新评论