XML布局
<RelativeLayout
android:id="@+id/rlay_meeting_contact_context"
android:layout_width="match_parent"
android:layout_height="44dp"
android:clickable="false"
android:focusable="false" > <TextView
android:id="@+id/tv_test"
style="@style/B4_Font_white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/TextView07"
android:duplicateParentState="true"
android:gravity="left|center"
android:singleLine="true"
android:text="@string/accept_invite_this_troop" /> </RelativeLayout>

注:android:gravity="left|center"//表示文本从左的中间开始,不然展开后文本会在中显开始显示

 

JAVA

定义:

private int mContextHeght = 0;
private Boolean mLookContextflag = false;

private RelativeLayout mrlayMeetingContactContext;
mrlayMeetingContactContext = (RelativeLayout) findViewById(R.id.rlay_meeting_contact_context);
 private TextView  mtvTest;

 mtvTest= (TextView) findViewById(R.id.tv_test);

利用timer计时器获取:LineCount

注:getLineCount注意:需要待对象展开后才能正确获取,不然获取到的是0

     TimerTask task = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}; final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
android.util.Log.e("Timer", "Timer");
update();
break;
}
super.handleMessage(msg);
} }; private void update() {
int linecount = mtvTest.getLineCount(); Log.i("tv.getLineCount()", mtvTest.getHeight() + "");
if ((!mLookContextflag) || (linecount < 2)) { mLookContextflag = true;
mtvTest.setEllipsize(null); // 展开
mtvTest.setSingleLine(false);
} else if ((mLookContextflag) || (linecount > 1)) {
mLookContextflag = false;
if (mtvTestt.getLineCount() > 1) {
int iHeght = mtvTest.getLineCount()
* mtvTest.getLineHeight(); if (iHeght > mContextHeght) {
android.view.ViewGroup.LayoutParams pp = mrlayMeetingContactContext
.getLayoutParams();
pp.height = iHeght;
mrlayMeetingContactContext.setLayoutParams(pp);
mMeetingContactContext.setHeight(iHeght);
//timer用完结束掉
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
} } }

调用:

     @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.meeting_contact_context:
if (mContextHeght == 0) {
mContextHeght = mrlayMeetingContactContext.getHeight();
if (mTimer == null) {
mTimer = new Timer(false);
mTimer.schedule(task, 10, 100);
}
}
}

andriod 动态设置TextView 和 RelativeLayou 高度的更多相关文章

  1. android 动态设置TextView值,例:金额添加

    一说到动态递增设置TextView值,非常多人应该立即就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值可是效率不 ...

  2. android 动态设置TextView值,例:金额增加

    一说到动态递增设置TextView值,很多人应该马上就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值但是效率不咋 ...

  3. Android 动态设置TextView的drawableLeft等属性

    首先,我们在开发过程中,会经常使用到android:drawableLeft="@drawable/ic_launcher"这些类似的属性: 关于这些属性的意思,无非是在你的tex ...

  4. android 动态设置控件宽高度

    Android 代码里直接使用 setWidth() 和 setHeight()设置宽高度是没用的. 解决办法是 改用setLayoutParams()方法 如设置宽高内容自适应: setLayout ...

  5. 在Activity中动态设置TextView的隐藏属性

    if (true) { //显示 viewHolder.tvLine.setVisibility(View.INVISIBLE);} else { //不显示 viewHolder.tvLine.se ...

  6. 动态设置WX滚动条的高度(非常重要)

    wxml: <scroll-view class="scroll" scroll-y="true" style="height:{{client ...

  7. 实现ScrollView中包含ListView,动态设置ListView的高度

    ScrollView 中包含 ListView 的问题 : ScrollView和ListView会冲突,会导致ListView显示不全 <?xml version="1.0" ...

  8. 【原创】如何在Android中为TextView动态设置drawableLeft等

    如何在Android中为TextView动态设置drawableLeft等   两种方式:   方式1:手动设置固有边界 Drawable drawable = getResources().getD ...

  9. Android动态布局,并动态为TextView控件设置drawableLeft、drawableRight等属性加入图标

    注:(图中每个条目和图标都是由代码动态生成) 代码动态布局,并须要为每个条目设置图标,此时用到了 android:drawableLeft="@drawable/icon"  父x ...

随机推荐

  1. 【原创】SQLServer将数据导出为SQL脚本的方法

    最近很多同学问到一个问题,如何将MSSQLServer的数据库以及里面的数据导出为SQL脚本,主要问的是MSSQLServer2000和2005,因为2008的管理器已经有了这个功能,2000和200 ...

  2. GJM :Unity 使用SqlServer数据库 [原创]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创 ,未经作者同意必须保留此段声明! ...

  3. java多线程-同步块

    Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java 同步块用来避免竞争.本文介绍以下内容: Java 同步关键字(synchronzied) 实例方法同步 ...

  4. 对jQuery选择器的总结

    jQuery基础选择器 $("div*")获取div下面的所有元素 $(".red,.green").html("怎么") // 需要注意的 ...

  5. Devrama Slider - 支持任意 HTML 的内容滑块

    Devrama Slider 是一个图片滑块,支持很多特色功能.除了支持图片滑动,其它的 HTML 内容也支持.主要特色:响应式.图片预加载.图片延迟加载.进度条.自定义导航栏和控制按钮等等. 在线演 ...

  6. io.js - 兼容 NPM 平台的 Node.js 新分支

    io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和 ...

  7. JS的window.location应用实例

    window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. Window Locationwindow.location 对象在编写时可不使用 window ...

  8. JavaScript语言精粹学习笔记

    0.JavaScript的简单数据类型包括数字.字符创.布尔值(true/false).null和undefined值,其它值都是对象. 1.JavaScript只有一个数字类型,它在内部被表示为64 ...

  9. iOS 使用AFNetworking遇到错误 Request failed: unacceptable content-type: text/html

    错误日志: Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacc ...

  10. SharePoint 2013 初始化Ribbon选中Tab

    SharePoint使用中,经常打开页面会有默认展开的Ribbon选项,有时这又不是我们需要的,所以我们就需要默认选中的项目,下面简单介绍下如何实现. 方法一 1.Dispform.aspx页面默认R ...