zoukankan      html  css  js  c++  java
  • andriod 动态设置TextView 和 RelativeLayou 高度

     1 XML布局
     2             <RelativeLayout
     3                 android:id="@+id/rlay_meeting_contact_context"
     4                 android:layout_width="match_parent"
     5                 android:layout_height="44dp"
     6                 android:clickable="false"
     7                 android:focusable="false" >
     8 
     9                 <TextView
    10                     android:id="@+id/tv_test"
    11                     style="@style/B4_Font_white"
    12                     android:layout_width="match_parent"
    13                     android:layout_height="match_parent"
    14                     android:layout_alignParentTop="true"
    15                     android:layout_toRightOf="@+id/TextView07"
    16                     android:duplicateParentState="true"
    17                     android:gravity="left|center"
    18                     android:singleLine="true"
    19                     android:text="@string/accept_invite_this_troop" />
    20 
    21             </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);
    1 private TextView  mtvTest;
    2 
    3 mtvTest= (TextView) findViewById(R.id.tv_test);

    利用timer计时器获取:LineCount

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

     1     TimerTask task = new TimerTask() {
     2         public void run() {
     3             Message message = new Message();
     4             message.what = 1;
     5             handler.sendMessage(message);
     6         }
     7     };
     8 
     9     final Handler handler = new Handler() {
    10         public void handleMessage(Message msg) {
    11             switch (msg.what) {
    12             case 1:
    13                 android.util.Log.e("Timer", "Timer");
    14                  update();
    15                 break;
    16             }
    17             super.handleMessage(msg);
    18         }
    19 
    20     };
    21 
    22     private void update() {
    23         int linecount = mtvTest.getLineCount();
    24 
    25         Log.i("tv.getLineCount()", mtvTest.getHeight() + "");
    26         if ((!mLookContextflag) || (linecount < 2)) {
    27 
    28             mLookContextflag = true;
    29             mtvTest.setEllipsize(null); // 展开
    30             mtvTest.setSingleLine(false);
    31         } else if ((mLookContextflag) || (linecount > 1)) {
    32             mLookContextflag = false;
    33             if (mtvTestt.getLineCount() > 1) {
    34                 int iHeght = mtvTest.getLineCount()
    35                         * mtvTest.getLineHeight();
    36 
    37                 if (iHeght > mContextHeght) {
    38                     android.view.ViewGroup.LayoutParams pp = mrlayMeetingContactContext
    39                             .getLayoutParams();
    40                     pp.height = iHeght;
    41                     mrlayMeetingContactContext.setLayoutParams(pp);
    42                     mMeetingContactContext.setHeight(iHeght);
    43                     //timer用完结束掉
    44                     if (mTimer != null) {
    45                         mTimer.cancel();
    46                         mTimer = null;
    47                     }
    48                 }
    49 
    50             }
    51 
    52         }

    调用:

     1     @Override
     2     public void onClick(View v) {
     3         // TODO Auto-generated method stub
     4         switch (v.getId()) {
     5         case R.id.meeting_contact_context:
     6             if (mContextHeght == 0) {
     7                 mContextHeght = mrlayMeetingContactContext.getHeight();
     8                 if (mTimer == null) {
     9                     mTimer = new Timer(false);
    10                     mTimer.schedule(task, 10, 100);
    11                 }
    12             }
    13 }
  • 相关阅读:
    最短路问题
    树的最小支配集,最小点覆盖与最大独立集
    最近公共祖先(LCA)
    图的生成树
    图的遍历
    图的存储结构
    博客园总算支持Markdown了
    关于VMware(虚拟机) 出现错误时处理办法
    Docker 部署 _实现每日情话 定时推送(apscheduler)
    tkinter + 爬虫 实现影视在线资源系统
  • 原文地址:https://www.cnblogs.com/jenson138/p/4118803.html
Copyright © 2011-2022 走看看