無涯和有涯
正看我下載的資料,正式雄心勃勃想看這個和看那個之際,腦際中閃現了莊子的一句話:以有涯追無涯,殆矣。Oh~。前段時間IBM有個人機比賽,人輸了,比的大概有點像百科全書之類的知識。知識是無涯的,但是知識不等於智慧,而智慧正式我們追究,智慧有涯還是無涯?好像是幾個月前,山東教育局要求閹割三字經,貌似呵護學生,實際不讓學生思考,分辨真偽,只是灌輸,這就如同和電腦比賽百科全書,我要部電腦就可勝出,而智慧不是。不管的AI能發展到什麼程度,知識可以增長,智能可以增加,但是智慧是人和機器的差異。我們的教育只在乎灌輸知識,而不在於教導智慧,教導學習,教導思考。這就是為什麼我們的中小學的成績如此優異,包括物理,數學的國際國際奧林匹克(奧數是奇技淫巧,不是智慧所在),然則我們的大學確是無力。
TableLayout
在某些UI設計中,也稱為GridLayout。我們根據行和列的排列來對widget進行布局。整個邏輯和我們在HTML中寫table的方式相似,定義表格然後以行為單位,然後在定製單元表格,即每一個widget,如果widget需佔用多個單元採用android:layout_span="num"的方式。
第一個表格單元為(0,0)。widget是按順序放入表格的,如果我們希望中間跳過幾個表格單元,可以指定widget具體在哪一列,例如android:layout_column="2",即放在第3列,那麼下一個widget將是第4列或者下一行。需要注意的是,和Table一樣,這些表格的大小並不一定是一樣的,將根據widget的natrual大小。這可能和我們的期望不一樣。下面是一個例子:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<!-- android:stretchColumns的值為一個column的列號,注意列號是從0還是,如果有多個列號,用逗號作為分割。這些列將儘可能填滿剩餘的空間,這對於小於有效空間的情況非常有用。如果不設定,則採用widget的natrual的大小,將不會填滿橫排剩餘的空間。在程式中可以是setColumnStretchable()—>
android:stretchColumns="1" >
<TableRow>
<TextView android:text="URL:" />
<!--如果我們不設定 android:stretchColumns="1",EditText這裡是沒有內容,因此它的natrual的width為0,即看不到。當我們設定row 1的兩個button填入 column2和3,那麼column 2和3將為適配為button的大小,而column1為1,這會導致的畫面 -->
<EditText android:id="@+id/entry"
android:layout_span="3" />
</TableRow>
<TableRow>
<Button android:id="@+id/cancel"
android:layout_column="2"
android:text="Cancel" />
<Button android:id="@+id/ok"
android:text="Ok" />
</TableRow>
</TableLayout>
android:stretchColumns:如同將上面例子。
android:shrinkColumns,將儘可能壓縮column空間,例如在上面的例子在Row0中我們加入:
<TextView android:text="1234567899" />
<TextView android:text="hello my friend!" android:textColor="#0000ff" />
<TextView android:text="1234567899" />
運行時如上左圖,最後一列看不到完整,我們可以在TableLayout中加入屬性:android:shrinkColumns="4,5",這樣就可以如第二個圖。在java code中可以使用setColumnShrinkable()。
android:collapseColumns:可以將某些列invisible,可用於向使用者顯示他們需要的或者重要的內容,而隱藏次要的,在java code中可以使用setColumnCollapsed()。我們將android:collapseColumns="4,5"替換了shrinkColumns的屬性,效果如右圖。
在TableRow之間可以放入widget,這時TableLayout就如同數值排放的LinearLayout的行為,並自動的將width設定為fill_parent。
ScrollView
顧名思義就是可以滾屏。ScrollView的處理很簡單:
<ScrollView xmlns:android... android:layout_width... android:layout_height...>
//裡面可以是其他Layout的布局,例如TableLayout,但是我們嘗試了在一個ScrollView中又兩個TableLayout出現錯誤,目前不太清楚為什麼。
</ScrollView>
需要注意的是ScrollView不提供雙向(橫+豎)的scroll,只提供單向的。
相關連結:
我的Android開發相關文章