Android 控件自动换行
来源:互联网 发布:好学近乎知水印 编辑:程序博客网 时间:2024/05/17 08:18
转载请注明出处: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深度文章和移动前沿技术分享
0 0
- Android 控件自动换行
- Android 控件自动换行
- Android 自定义自动换行控件
- android自定义控件自动换行效果实现
- android自定义控件自动换行效果实现
- android自定义控件实现自动换行效果
- android自定义控件自动换行效果实现
- 自动换行控件
- 彻底解决android中Textview控件文本自动换行问题
- Android 自定义控件-自动换行的流线性布局-DragFlowLayout
- android商品属性选择标签控件,可实现自动换行
- Edit Control 控件自动换行
- CEdit控件自动换行显示
- android TextView 自动换行
- Android TextView自动换行
- android元素自动换行
- Android TextView 自动换行
- Android LinearLayout 自动换行
- OTL、OCL、BTL电路及其判断方法
- ARC内存管理1
- 关于蓝牙
- jquery的post提交---$.post
- ListView多级子菜单的实现
- Android 控件自动换行
- 程序员面试宝典(第四版)——读书笔记-3、第七章:指针与引用
- 电脑识别
- Java内部类
- Delphi 按钮共享事件处理方法
- MRC内存管理2自动释放池
- NYOJ 823 人形序列
- hdu 5364 /BC 50A Distribution money
- 消息机制+流水线模式