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插件包,用这个插件包可以解决中文名乱码的问题,但不知解压的文件是否要用它提供的类压缩后的文 ...
随机推荐
- 阿里邮箱绑定Foxmail失败的解决办法
收件服务器地址: POP 服务器地址:pop3.mxhichina.com 端口110,SSL 加密端口995 或 IMAP 服务器地址:imap.mxhichina.com 端口143,SSL 加密 ...
- C# Autofac 出现 尝试创建“XXController”类型的控制器时出错。请确保控制器具有无参数公共构造函数 错误解决方案
出现以下错误: 总结解决方案: 本项目采用构造函数方法进行依赖注入,由于个人原因在业务层相互注入了接口,导致交叉:报错
- SVN系列学习(一)-SVN的安装与配置
1.SVN的介绍 SVN是Subversion的简称,是一个开发源代码的版本控制系统,采用了分支管理系统. 文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器.你可 ...
- jenkinsfile or pipline 实现微服务自动发布回滚流程
1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...
- [Codeforces]Codeforces Round #489 (Div. 2)
Nastya and an Array 输出有几种不同的数字 #pragma comment(linker, "/STACK:102400000,102400000") #ifnd ...
- js基础---object对象
//**********************************复杂JSON举例**************************************** var Jsondata={d ...
- 安卓发送图片文字,java后台接收
安卓使用retrofit2 和rxjava2 url: @Multipart @POST(UrlTools.STORYUPLOAD) Observable<Result> saveRepo ...
- Centos 修改源
1首先备份原来的配置文件: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2下载对应版本r ...
- 在把table表格中的数据导出到Excel的时候,以科学计数法显示位数多的数字时怎么解决?
sbHtml.AppendFormat("<td> {0}</td>", data[i].IDcard.ToString()); sbHtml.Append ...
- Jenkins里jobs和workspace什么区别
https://segmentfault.com/q/1010000012575095/a-1020000012590560 简单的说,job 中保存的是项目是在 jenkins 上的配置.日志.构建 ...