首页 > 代码库 > Android Layout布局
Android Layout布局
摘自原文: http://blog.csdn.net/llping2011/article/details/9992941
一、Android布局
Android中任何可视化的控件都是从android.veiw.View继承而来的,系统提供了两种方法来设置视图:
- 使用XML文件来配置View的相关属性,然后在程序启动时系统根据配置文件来创建相应的View视图。
- 在代码中直接使用相应的类来创建视图。
使用XML文件定义视图:
每个Android项目的源码目录下都有个res/layout目录,这个目录就是用来存放布局文件的。布局文件一般以对应activity的名字命名,以 .xml 为后缀。在xml中为创建组件时,需要为组件指定id,如:android:id="@+id/名字"系统会自动在gen目录下创建相应的R资源类变量。
在代码中使用视图:
在代码中创建每个Activity时,一般是在onCreate()方法中,调用setContentView()来加载指定的xml布局文件,然后就可以通过findViewById()来获得在布局文件中创建的相应id的控件了,如Button等。
1 public class MainActivity extends AppCompatActivity 2 { 3 private Button btn; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) 6 { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 btn = (Button)this.findViewById(R.id.btn1);10 }11 }
二、Android五大布局
- 线性布局(LinearLayout)
- 单帧布局(FrameLayout)
- 绝对布局(AbsoluteLayout)
- 表格布局(TableLayout)
- 相对布局(RelativeLayout)
- 常用属性
// 该组件位于引用组件的左方android:layout_toLeftOf// 该组件位于引用组件的右方android:layout_toRightOf// 该组件位于引用组件的上方android:layout_above// 该组件位于引用组件的下方android:layout_below// 该组件是否对齐父组件的左端android:layout_alignParentLeft// 该组件是否齐其父组件的右端android:layout_alignParentRight// 该组件是否对齐父组件的顶部android:layout_alignParentTop// 该组件是否对齐父组件的底部android:layout_alignParentBottom// 该组件是否相对于父组件居中android:layout_centerInParent// 该组件是否横向居中android:layout_centerHorizontal// 该组件是否垂直居中android:layout_centerVertical// 该组件权重/优先级,表示控件占用空间的比例android:layout_weight
PS:layout_weight -- 指定控件的权重或者优先,最明显的效果就是与其它控件相比,所占用的空间比例的大小。
- 常用属性
示例:
1 public class SecondActivity extends Activity 2 { 3 private LinearLayout mLinearLayout; 4 private TextView mTextView; 5 private Button mBtn; 6 @Override 7 protected void onCreate(Bundle savedInstanceState) 8 { 9 super.onCreate(savedInstanceState);10 setContentView(R.layout.activity_second);11 mLinearLayout = new LinearLayout(this);12 mLinearLayout.setOrientation(LinearLayout.VERTICAL);13 mLinearLayout.setBackgroundColor(0xFFFF0000);14 setContentView(mLinearLayout);15 mTextView = new TextView(this);16 mTextView.setText("Second Activity");17 // 向View中添加子元素18 mLinearLayout.addView(mTextView);19 mBtn = new Button(this);20 mBtn.setText("Back");21 mLinearLayout.addView(mBtn);22 mBtn.setOnClickListener(new Button.OnClickListener()23 {24 @Override25 public void onClick(View v)26 {27 // 创建intent,数据传递的媒介28 final Intent i = new Intent(SecondActivity.this, MainActivity.class);29 // 向OS发送进入另一个activity消息30 startActivity(i);31 // 改变当前Activity状态为完成,即销毁.32 SecondActivity.this.finish();33 }34 });35 36 }37 }
三、属性区别
在设置控件属性时,经常看到android:layout_width与android:width,那么,这两者有什么分别。有"layout_"前缀的,指对整个控件而言,与父控件的关系,而没有"layout_"前缀的,是对控件本身的文本内容。比如:layout_gravity是指在父控件中的对齐方式,而gravity是控件本身文本内容的对齐方式。layout_margin是指控件级别相同的控件间间距。
- 属性列表:
android:layout_widthandroid:layout_heightandroid:layout_marginandroid:layout_gravityandroid:textandroid:textColorandroid:gravityandroid:width
- match_parent与wrap_parent区别
- match_parent:设置视图与其父视图大小相同。(设置一个控件的布局为match_parent将强制性地使控件扩展,以填充布局单元内尽可能多的空间。)
- wrap_parent:视图将根据其内容自动调整大小。(设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。)
Android Layout布局
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。