1. 程式人生 > >Android開發基礎 -- tools:context=".MainActivity" 的作用

Android開發基礎 -- tools:context=".MainActivity" 的作用

Android開發中在佈局檔案裡面都會有如下面的內容:

    <LinearLayout xmlns:androidLinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"   
               xmlns:tools="http://schemas.android.com/tools"  
               android:orientation="vertical"   
               android:layout_width="match_parent"   
               android:layout_height="match_parent"   
               tools:context=".MainActivity"/>  


這裡出現的 tools:context   (tools:text 等同理) 作用,網上講了很多,主要回答如下:

tools:context="activity name"這一句不會被打包進APK。只是ADT的Layout Editor在你當前的Layout檔案裡面設定對應的渲染上下文,說明你當前的Layout所在的渲染上下文是activity name對應的那個activity,如果這個activity在manifest檔案中設定了Theme,那麼ADT的Layout Editor會根據這個Theme來渲染你當前的Layout。就是說如果你設定的MainActivity設定了一個Theme.Light(其他的也可以),那麼你在視覺化佈局管理器裡面看到的背景阿控制元件阿什麼的就應該是Theme.Light的樣子。僅用於給你看所見即所得的效果而已。


*****************************************************************************************************************************

有的人看了會明白一些,有的人看了也不太清楚,我再追加幾句解釋:

拿一個簡單 tools:text 舉個例子更形象些,方便進一步理解 tools:context


TextView 採用了 android :text , 而 EditText中使用了 tools:text  ,右邊Layout 編輯器會顯示內容Name , sample name 兩個 字型,  如果你執行程式碼後編譯,生成apk 後,終端就只顯示Name,不會顯示Sample Name這個字樣.   

大家可以試試執行,看下效果就知道。。

比如我們在佈局TextView 中想要顯示一段文字時,以前使用android:text顯示,然後在編譯器中佈局調整,最後完成後刪除android:text屬性。有了tools引數後,可以直接使用tools:text在預覽時顯示文字即可,省卻了上面刪除的麻煩,編譯後此tools:text 相當於註釋了。)

講到這裡,我們回去繼續理解:tools:context 屬性


1. tools:context="activity name"這一句不會被打包進APK, 

    --> 理解:相當於這句被註釋了,編譯後不起任何作用. 

2.  只是ADT的Layout Editor(即為上面圖示右邊模擬器)在當前的Layout檔案裡面設定對應的渲染上下文,當前的佈局xml所在的渲染上下文是activity name對應的那個activity,如果這個activity在manifest檔案中設定了Theme,那麼ADT的Layout Editor會根據這個Theme來渲染你當前的Layout。就是說如果你設定的MainActivity設定了一個Theme.Light(其他的也可以)。

    -->理解:你加上了tools:context="activity name" ,這個xml 佈局就是渲染指定activity , manifest檔案中設定了Theme 的話, 上圖右邊模擬器theme 樣式也會跟著變化對應 theme。


總而言之, 這些tools 屬性主要針對的 上圖右邊那個模擬器 除錯時候顯示狀態,,編譯中不起作用的, 

以上理解 希望對大家有進一步的幫助。


【轉】http://blog.csdn.net/xiabing082/article/details/50563559