您的位置:首页 > 编程语言

使用代码构建布局及设置常用属性

2015-12-11 18:33 411 查看
        很多时候,由于项目的原因,我们必须要通过代码来构建布局。而很多控件的属性,在用代码构建的时候,一般不是很方便。所以为了日后方便复习,特来把代码写过的布局整理一下以供参考。

        先来看一个布局:     

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这些属性,直接缩放控件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 布局