Android 控制項自動換行

來源:互聯網
上載者:User

標籤:android   android開發   控制項   自動換行   linearlayout   

轉載請註明出處:http://blog.csdn.net/u011176685/article/details/47373503

一、問題描述

a.項目中擷取矩形框中從後台擷取資料,而現在有些地區會有7,8個字。當遇到解析度為480*800時,瀏覽次數就會被擠壓掉。不能適配所有的解析度,影響使用者體驗。

b.網上查了很多資料,其中Android LinearLayout 自動換行 自訂了一個view,然後把view添加進去就行了。但是因為我的項目用的自動換行不多,而且感覺代碼能少還是少點。如果用的比較多的朋友,可以參考下。


二、解決問題

a.矩形框xml布局檔案

<RelativeLayout                        android:layout_width="fill_parent"                        android:layout_height="wrap_content"                        android:id="@+id/job_details_fixgl">                        <!--招聘地區-->                        <TextView                            android:id="@+id/job_details_aty_area_tv"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:drawableLeft="@drawable/icon_classify_coord"                            android:drawablePadding="3dp"                            android:textColor="#999999"                            tools:text="渝北區渝北渝北" />                        <!--發布時間-->                        <TextView                            android:layout_toRightOf="@+id/job_details_aty_area_tv"                            android:id="@+id/job_details_aty_date_tv"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:drawableLeft="@drawable/icon_time"                            android:drawablePadding="3dp"                            android:layout_marginLeft="5dp"                            android:textColor="#999999"                            tools:text="2015.04.12" />                        <!--瀏覽次數-->                        <TextView                            android:id="@+id/job_details_aty_views_tv"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:layout_marginLeft="5dp"                            android:drawableLeft="@drawable/icon_eye"                            android:drawablePadding="3dp"                            android:textColor="#999999"                            tools:text="1233次" />                    </RelativeLayout>

b.Activity裡面的程式碼片段

                    String date = "2015.4.12";                    String address ="江北區"                    String count= "123"+"次";                    //計算3個控制項各自的寬度                    float addWidth=  tvArea.getPaint().measureText(address)+ DensityUtil.dip2px(JobDetailsActivity.this, 15);//地理位置                    float dateWidth=  dateTv.getPaint().measureText(date)+ DensityUtil.dip2px(JobDetailsActivity.this,15);//日期                    float countWidth=viewsTv.getPaint().measureText(count)+ DensityUtil.dip2px(JobDetailsActivity.this,10);//瀏覽次數                    int detailsWidth= llDetails.getWidth();                    RelativeLayout.LayoutParams lp= (RelativeLayout.LayoutParams) viewsTv.getLayoutParams();                    if(addWidth+dateWidth+countWidth>=detailsWidth){                        //如果3個控制項的寬度之和大於父容器的寬度則動態修改第3個控制項的位置,調整到第1個控制項下方                        lp.addRule(RelativeLayout.BELOW,R.id.job_details_aty_area_tv);                        lp.setMargins(0,0,0,0);                        viewsTv.setLayoutParams(lp);                    }else{                        //如果3個控制項的寬度之和小於父容器的寬度則動態修改第3個控制項的位置調整到第2個右方                        lp.addRule(RelativeLayout.RIGHT_OF,R.id.job_details_aty_date_tv);                        viewsTv.setLayoutParams(lp);                    }                    tvArea.setText(address);                    dateTv.setText(date);                    viewsTv.setText(count);

簡單的解釋一下15,10 不是隨便設定的。textView左邊的圖片是14*20px的所以寬是7dp(1dp約等於2px) 圖片和文字之間間距3dp  距離右邊控制項的margin 5dp 7+3+5=15dp。DensityUtil是工具類。關於dip轉px這裡就不講述了。

c.如果有不清楚的可以提出來。有寫的不對的地方也請指出。相互學習。程式猿是一個不斷學習的過程。


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android 控制項自動換行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.