使用代码构建布局及设置常用属性
2015-12-11 18:33
411 查看
很多时候,由于项目的原因,我们必须要通过代码来构建布局。而很多控件的属性,在用代码构建的时候,一般不是很方便。所以为了日后方便复习,特来把代码写过的布局整理一下以供参考。
先来看一个布局:
![](https://img-blog.csdn.net/20151211180442475?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
所以我们看这一段,addRule方法,就是在相对布局的时候,当前控件设置基准线的。前面一个参数代表什么样的基准线,左边、右边、上边、下边。后面一个参数代表,以哪一个控件作为标准。除了这种用法,我们还可以设置android:layout_alignParentRight这些属性等等。
drawableTop或者drawableRight这些也是我们为textview或者button这些控件,常用的设置选项。但是在代码中,却没有setDrawTop这些方法。那我们应该怎么实现?可以参考以下代码:
三、TextView加下划线或者中划线或者应用不同颜色:
// 中划线
view
sourceprint?
// 下划线
view
sourceprint?
//取消设置的线
view
sourceprint?
还有一种方式是直接使用HTML的标签来设置下划线:
四、setScaleY:
先来看一个布局:
RelativeLayout relativeLayout=new RelativeLayout(getActivity()); ViewGroup.MarginLayoutParams layoutParams=new ViewGroup.MarginLayoutParams(ViewGroup.MarginLayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); relativeLayout.setLayoutParams(layoutParams); relativeLayout.setGravity(Gravity.CENTER); TextView textView=new TextView(getActivity()); ViewGroup.MarginLayoutParams params; String TagName=skinCardTagOption.getTagName(); if(TagName.length()<=4) { params=new ViewGroup.MarginLayoutParams(DipUtil.dip2px(getActivity(),70),DipUtil.dip2px(getActivity(),28)); }else { params=new ViewGroup.MarginLayoutParams(ViewGroup.MarginLayoutParams.WRAP_CONTENT,DipUtil.dip2px(getActivity(),28)); textView.setPadding(DipUtil.dip2px(getActivity(), 12), 0, DipUtil.dip2px(getActivity(), 12), 0); } textView.setLayoutParams(params); textView.setGravity(Gravity.CENTER); textView.setId(R.id.option_tv); textView.setText(skinCardTagOption.getTagName()); textView.setTag(skinCardTagOption); textView.setBackgroundResource(R.drawable.beauty_info_selector); relativeLayout.addView(textView); RelativeLayout.LayoutParams txtParams= (RelativeLayout.LayoutParams) textView.getLayoutParams(); txtParams.setMargins(DipUtil.dip2px(getActivity(),5),DipUtil.dip2px(getActivity(),7),
DipUtil.dip2px(getActivity(),5),DipUtil.dip2px(getActivity(),7)); textView.setLayoutParams(txtParams); TextView tagTV=new TextView(getActivity()); ViewGroup.MarginLayoutParams tagParams=new ViewGroup.MarginLayoutParams(DipUtil.dip2px(getActivity(),15),
DipUtil.dip2px(getActivity(), 15)); tagTV.setLayoutParams(tagParams); tagTV.setBackgroundResource(R.drawable.label_item_selector); relativeLayout.addView(tagTV); RelativeLayout.LayoutParams reParams= (RelativeLayout.LayoutParams) tagTV.getLayoutParams(); reParams.topMargin=DipUtil.dip2px(getActivity(),3); reParams.rightMargin=DipUtil.dip2px(getActivity(),1); reParams.addRule(RelativeLayout.ALIGN_RIGHT,R.id.option_tv); tagTV.setLayoutParams(reParams);上面这段代码,我是构建了一个相对布局。在相对布局中add了2个textview,并且tagTV的右边坐标是以textview的右边坐标为基准线来设置的。也就是说,在没有给tagTV设置margin的情况下,它们两的右边坐标是相等的。所以最终效果是这样的:
RelativeLayout.LayoutParams reParams= (RelativeLayout.LayoutParams) tagTV.getLayoutParams(); reParams.addRule(RelativeLayout.ALIGN_RIGHT,R.id.option_tv); tagTV.setLayoutParams(reParams);一、alignParentRight和[b]alignRight:[/b]
所以我们看这一段,addRule方法,就是在相对布局的时候,当前控件设置基准线的。前面一个参数代表什么样的基准线,左边、右边、上边、下边。后面一个参数代表,以哪一个控件作为标准。除了这种用法,我们还可以设置android:layout_alignParentRight这些属性等等。
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);二、drawableRight:
drawableTop或者drawableRight这些也是我们为textview或者button这些控件,常用的设置选项。但是在代码中,却没有setDrawTop这些方法。那我们应该怎么实现?可以参考以下代码:
Drawable drawable=getResources().getDrawable(R.drawable.tag_select); drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight()); textView.setCompoundDrawables(null,null,drawable,null);这样我们就通过代码为textview设置了drawableRight。
三、TextView加下划线或者中划线或者应用不同颜色:
// 中划线
view
sourceprint?
1.
textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
// 设置中划线并加清晰
// 下划线
view
sourceprint?
1.
textView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
//取消设置的线
view
sourceprint?
1.
textView.getPaint().setFlags(
0
);
// 取消设置的的划线
还有一种方式是直接使用HTML的标签来设置下划线:
holder.originPriceTV.setText(Html.fromHtml("<font color='#999999'> <u>测试</u></font>"+"谢谢"));这种方法不仅更简单而且更灵活,而且可以同时设置多种效果,不仅可以设置不同的颜色,同时还可以设置下划线等等。当然不保证HTML的所有标签都能使用。
四、setScaleY:
view.setScaleY(0.8f); view.setAlpha(0.8f);有时候,我们需要直接缩放控件,而不需要动画。那么就可以直接用setScaley这些属性,直接缩放控件了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories