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 }
  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/jenson138/p/4118803.html
Copyright © 2011-2022 走看看