Android Layout布局
阿新 • • 發佈:2017-05-07
coo addview 控件 ride 底部 pat 表格 -- 全部
摘自原文: 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將強制性地使視圖擴展以顯示全部內容。)
Android Layout布局