Android學習筆記(十):Activity-TableLayout和ScrollView

來源:互聯網
上載者:User

無涯和有涯

正看我下載的資料,正式雄心勃勃想看這個和看那個之際,腦際中閃現了莊子的一句話:以有涯追無涯,殆矣。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開發相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.