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             @Override
25             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_width
android:layout_height
android:layout_margin
android:layout_gravity
android:text
android:textColor
android:gravity
android:width
  • match_parent与wrap_parent区别

    • match_parent:设置视图与其父视图大小相同。(设置一个控件的布局为match_parent将强制性地使控件扩展,以填充布局单元内尽可能多的空间。)
    • wrap_parent:视图将根据其内容自动调整大小。(设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。)
时间: 2024-10-15 10:31:26

Android Layout布局的相关文章

android layout布局属性

参考:http://blog.csdn.net/msmile_my/article/details/9018775 第一类:属性值 true或者 false           android:layout_centerHrizontal 水平居中     android:layout_centerVertical 垂直居中     android:layout_centerInparent 相对于父元素完全居中     android:layout_alignParentBottom 贴紧父元

Android -- Layout布局文件里的android:layout_height等属性为什么会不起作用?

有的时候,我们配置好的布局文件,在加载完成添加到我们的Activity中后发现,并没有安装我们设置的属性来布局,比如我们设置了android:layout_marginTop="100dip",但是运行程序后发现一点作用都没有,相似的还有layout_height等以android:layout_开头的属性设置都没有作用,这类问题以我们使用Adapter的作为数据源的时候作用居多,因为Adapter里有一个方法是getView,这个返回的VIew是一个从XML布局里加载的,一般如下:

[转]android layout布局属性

参考:http://blog.csdn.net/msmile_my/article/details/9018775 第一类:属性值 true或者 false           android:layout_centerHrizontal 水平居中     android:layout_centerVertical 垂直居中     android:layout_centerInparent 相对于父元素完全居中     android:layout_alignParentBottom 贴紧父元

Android Layout 布局属性

前言 Android应用开发工程师不可避免的会遇到UI设计师提供了效果图,需要在短期内快速实现UI效果.这需要Android应用开发工程师对Android Layout布局有较为熟悉的了解,才能快速的搭建起UI框架来. Android Layout Android中Layout主要有:FrameLayout.LinearLayout.RelativeLayout.TableLayout.AbsoluteLayout 共有XML属性 Android中的每个控件都会占据一定的矩形区域,该控件对象会处

Android Layout布局文件里的android:layout_height等属性不起作用

有的时候,我们配置好的布局文件,在加载完成添加到我们的Activity中后发现,并没有安装我们设置的属性 来布局,比为我们设置了android:layout_marginTop="100dip",但是运行程序后发现一点作用都没有,相似的还有layout_height等以android:layout_开头的属性设置都没有作用,这类问题以我们使用Adapter的作为数据源的时候作用居多,因为Adapter里有一个方法是getView,这个返回的VIew是一个从XML布局里加载的,一般如下:

Android layout布局属性、标签属性总结大全

RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal        水平居中 android:layout_centerVertical         垂直居中 android:layout_centerInparent         相对于父元素完全居中 android:layout_alignParentBottom     贴紧父元素的下边缘 android:layout_alignParentLeft    

【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器

Android Layout Binder是一个网站,能够在线的根据layout布局文件自动生成findViewById的java代码. 网址是http://android.lineten.net/layout.php 如图:

【ALearning】第四章 Android Layout组件布局(二)

前面我们分别介绍和学习了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoluteLayout(绝对布局).这次我们要进行RelativeLayout(相对布局)和TableLayout(表格布局)的学习.这部分是很重要的知识点.RelativeLayout是开发过程中强烈建议使用的,而TableLayout是满足一些特定需求时(常见表格显示,但不局限于此)需要使用. [博客专栏:http://blog.csdn.net/column/details/alearn

android 学习Layout布局的使用

android 常用布局 LinearLayout(线性布局) 线性的 垂直的 水平的RelativeLaytout(相对布局) 最灵活的TableLayout(表格布局) 使用GridView代替AbsoluteLayout(绝对布局) 最好不要使用 绝对坐标Framelayout(帧布局) 布局叠加时使用 比如视频缓冲的环形滚动条 使用频次Absolute<Table<Frame<Linear<Relative android布局原则(1)尽量多的使用线性布局和相对布局不要使用