android使用代码写布局文件

来源:互联网 发布:java base64转码 编辑:程序博客网 时间:2024/06/05 18:34

项目中经常会遇到需要在代码中编写布局的情况,下面简单说下如何在代码中写布局

先看下效果:


看下代码如何实现吧:

import android.app.Activity;import android.os.Bundle;import android.view.ViewGroup;import android.widget.Button;import android.widget.RelativeLayout;import android.widget.RelativeLayout.LayoutParams;public class DemoActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);// 根布局View,下边所有View都在此RelativeLayout中RelativeLayout rootLayout = new RelativeLayout(this);RelativeLayout.LayoutParams rootLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);rootLayout.setLayoutParams(rootLayoutParams);// 设置在根布局的左上角RelativeLayout.LayoutParams LTLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);LTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);LTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);Button btnLT = new Button(this);btnLT.setText("左----------上");btnLT.setId(1);// 设置在btnLT的下边并且右对齐RelativeLayout.LayoutParams LTLDLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);LTLDLayoutParams.addRule(RelativeLayout.BELOW, btnLT.getId());LTLDLayoutParams.addRule(RelativeLayout.ALIGN_RIGHT, btnLT.getId());//设置和btnLT右对齐Button btnDRD = new Button(this);btnDRD.setText("底部右对齐");// 设置在根布局的左下角RelativeLayout.LayoutParams LDLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);LDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);LDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);Button btnLD = new Button(this);btnLD.setText("左----------下");// 设置在根布局的右上角RelativeLayout.LayoutParams RTLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);RTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);RTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);Button btnRT = new Button(this);btnRT.setText("右----------上");;// 设置在根布局的右下角RelativeLayout.LayoutParams RDLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);RDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);RDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);Button btnRD = new Button(this);btnRD.setText("右----------下");rootLayout.addView(btnLT, LTLayoutParams);rootLayout.addView(btnLD, LDLayoutParams);rootLayout.addView(btnRT, RTLayoutParams);rootLayout.addView(btnRD, RDLayoutParams);rootLayout.addView(btnDRD, LTLDLayoutParams);setContentView(rootLayout);}}

附带使用View.setId的正确姿势

在res/values/下添加ids.xml(名字可随意)文件,代码如下:

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="my_view" type="id" />
</resources>

   然后在代码中做如下设置即可:

1
my_view.setId(R.id.my_view);

下面就将verb相关常量名列如下:

relLayoutParams.alignWithParent=true  如果对应的兄弟元素找不到的话就以父元素做参照物

RelativeLayout.CENTER_HORIZONTAL   在父控件中水平居中

RelativeLayout.CENTER_VERTICAL   在父控件中垂直居中

RelativeLayout.CENTER_IN_PARENT  相对于父控件完全居中

RelativeLayout.ALIGN_PARENT_BOTTOM  紧贴父控件的下边缘

RelativeLayout.ALIGN_PARENT_TOP  紧贴父控件的上边缘

RelativeLayout.ALIGN_PARENT_LEFT紧贴父控件的左边边缘

RelativeLayout.ALIGN_PARENT_RIGHT  紧贴父控件的右边缘

 

RelativeLayout.ABOVE 在某元素的上方  需要第二个参数为某元素的ID

RelativeLayout.BELOW 在某元素的下方 需要第二个参数为 某元素的ID

RelativeLayout.LEFT_OF 在某元素的左边 需要第二个参数为某元素的ID

RelativeLayout.RIGHT_OF  在某元素的右边 需要第二个参数为 某元素的ID

RelativeLayout.ALIGN_TOP 本元素的上边缘和某元素的的上边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_BOTTOM 本元素的上边缘和某元素的的下边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_LEFT  本元素的上边缘和某元素的的左边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_RIGHT  本元素的上边缘和某元素的的右边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_BASELINE   本元素的基线和某元素的的基线对齐 需要第二个参数为某元素的ID


0 0