码迷,mamicode.com
首页 > 移动开发 > 详细

Android 控件自动换行

时间:2015-08-09 12:44:09      阅读:486      评论:0      收藏:0      [点我收藏+]

标签: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 控件自动换行

标签:android   android开发   控件   自动换行   linearlayout   

原文地址:http://blog.csdn.net/u011176685/article/details/47373503

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!