zoukankan      html  css  js  c++  java
  • 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将强制性地使视图扩展以显示全部内容。)
  • 相关阅读:
    猜年龄的问题
    某字符串可能包含26个英文字母,可能包含6种符号,可能包含3个数字,统计他们出现的个数
    指针变量前面类型的作用和意义
    二维数组 同时计算 练习题
    二维数组,行累加与列累加同时进行
    二维数组斜线扫描心得与分析
    二维数组扫描操作题
    LeetCode | Remove Duplicates from Sorted List II
    LeetCode | Remove Nth Node From End of List
    LeetCode | Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/naray/p/5274964.html
Copyright © 2011-2022 走看看