標籤:
1.布局
布局的內部除了放置控制項外,也可以放置布局,通過多層布局的嵌套,我們就能夠完成一些 比較複雜的介面實現
¨四種基本布局
LinearLayoutRelativeLayoutFrameLayoutTableLayout2.補充知識View所有使用者互動的組件(Widget)的基類一個View對象佔據矩形地區,並負責這個地區內的像素繪製和事件處理。 ViewGroup繼承自View類ViewGroup類是所有布局(layouts)的基類,布局類是不可見的,用於容納其他View類對象並且定義它們的布局屬性。有兩種方式來定義布局:1.使用XML檔案 XML布局檔案 儲存在目錄res/layout 副檔名必須是xml,檔案名稱必須是小寫字母 ADT會對每一個xml布局檔案產生R類的一個變數,例如:main.xml-->R.layout.main 關鍵的API:setContentView() 使用XML方式的優點 將應用程式的介面與應用程式的邏輯行為分離。 你可以在不需要修改和重新編譯原始碼的情況下,來修改和調整程式介面。 布局參數 XML 布局的命名方式:layout_something 例如:layout_width定義了組件的寬度。 組件的布局參數用來告訴容納這個組件的布局這個組件希望怎樣被布置。2.使用Java代碼來編寫(Instantiate layout elements at runtime)
LinearLayout
線性布局將所有它的子組件排列成一列或者一行。預設的排列方向是horizontal(水平).布局參數¨android:layout_gravity水平方向的線性布局中的控制項, android:layout_gravity屬性只在垂直方向上起作用垂直方向的線性布局中的控制項, android:layout_gravity屬性只在水平方向上起作用¨android:layout_weight指示該線性布局的組件需要額外佔據的空間。0表示該組件應該是被壓縮的。否則組件將按比例在屬性大於0組件中來分配額外的空間。
android:orientation="horizontal"
RelativeLayout容器內的子項目是由其相對於其他子項目或者容器的位置來決定的。
android:layout_alignParentLeft、
android:layout_alignParentTop、
android:layout_alignParentRight、
android:layout_alignParentBottom、
android:layout_centerInParent
FrameLayout
FrameLayout 相比於前面兩種布局就簡單太多了,因此它的應用情境也少了很多。這種 布局沒有任何的定位方式,所有的控制項都會擺放在布局的左上方。
TableLayout
自訂控制項
方法一建立一個新的布局title.xml在活動布局中使用<include>標籤引用title.xml (只有顯示效果,沒有行為)方法二建立一個LinearLayout的子類TitleLayout,並使用title.xml作為布局在活動布局中引用TitleLayout(既有顯示效果,又有行為) ¨ListViewListView的簡單用法 定製ListView的介面 ListView的點擊事件 提升ListView的運行效率 ListView是Android中最常用的控制項。當需要顯示列表的使用就會使用ListView,例如:手機的連絡人,聊天資訊,查看微博資訊等等使用:n使用ListView顯示一組字串
//activity_main.xml<ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" ></ListView>//使用String類型的數組//調用ArrayAdapter的建構函式來對資料進行封裝public class MainActivity extends Activity { private String[] data = { "Apple", "Banana", "Orange", "Watermelon", "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); } }ArrayAdapter(Context context, int resource, T[] objects)¨context: 內容物件,一般會傳入Activity對象¨resource : 一個包含TextView的布局,一般會使用系統提供的布局資源¨objects:資料數組,如果數組的資料類型不是String,則會調用這個類的toString方法Adapter中文名稱適配器,用來給ListView提供¨資料¨布局資源
提升ListView效率
ngetView方法中有一個convertView參數,可以直接利用之前載入好的布局,從而提升代碼效率
Android05-UI02布局,自訂控制項,ListView