android 用java代码设置布局、视图View的宽度/高度或自适应
在achat项目中,对话内容的长宽设置为自适应。可是假设文本内容太多,则宽度几乎相同布满,若自己说的和对方说的都非常多内容。则满屏都是文字。则不easy分辨出是来自别人说的还是自己说的。那么须要对本身具有自适应的布局再来个宽度限制。
首先,在xml里面定义layout的layout_width/layout_height都要设置为wrap_content。然后在getView方法里面,一開始就让这个布局wrap_content(为什么xml里面设置了wrap_content。这里还要再设置一遍呢?由于布局的重用,不多说了),WidgetController.setLayoutWidth(holder.lay_content, MarginLayoutParams.WRAP_CONTENT);
然后。在填充完布局后,再来一段。让这个布局不能超过屏幕宽的50%。若超过则以这个为最大宽度:
int w=(int)(DensityUtil.getScreenWidth()*0.5);
if (WidgetController.getWidth(holder.lay_content)>w){
WidgetController.setLayoutWidth(holder.lay_content,w);
}
以下是setLayoutWidth方法的代码,相当好用:
/**
* 設置View的寬度(像素)。若設置爲自適應則應該傳入MarginLayoutParams.WRAP_CONTENT
* @param view
* @param width
*/
public static void setLayoutWidth(View view,int width)
{
/* MarginLayoutParams margin=new MarginLayoutParams(view.getLayoutParams());
margin.setMargins(margin.leftMargin,y, margin.rightMargin, y+margin.height);
//RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);
//view.setLayoutParams(layoutParams);
ViewGroup.MarginLayoutParams layoutParams =newLayParms(view, margin);
//RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);
view.setLayoutParams(layoutParams);
view.requestLayout();*/
if (view.getParent() instanceof FrameLayout){
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams) view.getLayoutParams();
lp.width=width;
view.setLayoutParams(lp);
//view.setX(x);
view.requestLayout();
}
else if (view.getParent() instanceof RelativeLayout){
RelativeLayout.LayoutParams lp=(RelativeLayout.LayoutParams)view.getLayoutParams();
lp.width=width;
view.setLayoutParams(lp);
//view.setX(x);
view.requestLayout();
}
else if (view.getParent() instanceof LinearLayout){
LinearLayout.LayoutParams lp=(LinearLayout.LayoutParams)view.getLayoutParams();
lp.width=width;
view.setLayoutParams(lp);
//view.setX(x);
view.requestLayout();
}
}
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9ja2xlZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
转载请注明出处:http://blog.csdn.net/rocklee
android 用java代码设置布局、视图View的宽度/高度或自适应的更多相关文章
- JAVA代码设置selector不同状态下的背景
Selector设置button点击效果(详细)以及常见问题https://www.jianshu.com/p/a0ddba6d7969 Android 代码动态设置TextView的背景.颜色Sel ...
- js调用android本地java代码
js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...
- Android逆向-java代码基础
作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...
- Android在java代码中设置margin
我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@dra ...
- Android -- java代码设置margin
我们平常可以直接在xml里设置margin,如: <ImageView android:layout_margin="5dip" android:src="@dra ...
- Android动态Java代码调整window大小
Android调整window大小 举一个例子,设置当前的APP所需要的屏幕高度为设备高度的一半: Window window = getActivity().getWindow(); WindowM ...
- Unity 中调用Android的JAVA代码
首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...
- Android视频通话Java代码
近期学习Android平台下跨平台音视频通信开发,尽管网上有非常多开源项目供我们參考学习.但音视频效果非常一般,还有非常多不稳定的因素,毕竟是开源嘛.在国内我找到了一个比較好音视频通信解决方式(百 ...
- Android中用Java代码实现zip文件解压缩
如果需要下载的文件有很多是中文名的,解压时有中文名的文件出现乱码,试了很多方法不能解决问题.据说有一个Java插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...
随机推荐
- Coursera公开课-Machine_learing:编程作业7
这周的编程作业主要是两方面内容. 1.K-means聚类. 2.PCA(Principle Component Analys)主成分分析. 方式主要是通过对图像的聚类实现压缩图像,后来发现PCA也可以 ...
- java环境搭建(及安装问题“No repository found containing”解决) 并创立第一个java程序
环境: java8 及 Eclipse java8 配置:http://jingyan.baidu.com/article/e2284b2b5967e7e2e7118d74.html Eclipse ...
- 黑马程序员 关于c# windows窗体关闭时线程未能完全退出问题(专题一)
<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a> ...
- JS——scroll动画
固定导航栏 1.计算导航栏到顶部的距离值 2.当scrollTop值大于这个距离值就添加定位,当小于距离值后解除定位 注意事项:当导航栏添加定位之后,导航栏就脱离了文档流,也就是不占位了,下面的盒子就 ...
- C#——设置开机启动
将exe应用程序设置为开机启动,有多种方法,我们主要通过注册表设置开机启动选项. using Microsoft.Win32; using System.Windows.Forms; static v ...
- db2 jdbc连接字符串中 指定currentSchema
场景:连接DB2数据库的,jdbc的连接字符串中没有给当前的数据源用户指定默认的schema,而当前的数据源用户下可能有多个schema,则会使用数据源用户默认的schema. 例如:admin用户的 ...
- 【译】x86程序员手册09-第3章程序指令集
注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828 ...
- ubuntu下sudo命令不能使用问题
不知道从什么时候开始,ctrl+alt+F1进入命令行之后,登录成功.使用sudo命令,不能使用....被坑了很久. 解决方法: 出现 [sudo ] username !!! 之后,在输入一遍 密码 ...
- 【sqli-labs】 less53 GET -Blind based -Order By Clause -String -Stacked injection(GET型基于盲注的字符型Order By从句堆叠注入)
http://192.168.136.128/sqli-labs-master/Less-53/?sort=1';insert into users(id,username,password) val ...
- typeof和instanceof的区别
typeof和instanceof的区别: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能 ...