Android總結:名稱空間
腦海裡突然浮現起一個名詞—名稱空間,由於一直以來對這個知識點理解不是很透徹,查閱相關資料並學習總結如下;
一、名稱空間簡介
1.名稱空間作用
作用:提供避免元素命名衝突的方法,裡面存放的是特性屬性的集合;
例如:Android的View存在id屬性—代表View的唯一id,而你自定義的View也想自定義一個id屬性—代表該型別View編號。那麼這個時候名稱空間就派上用場了,你可能會分別生成android:id和myview:id代表兩個屬性(android和myview即名稱空間的名稱);
2.名稱空間分類
在Android中的名稱空間可分為3種,如下:
android名稱空間:xmlns:android="http://schemas.android.com/apk/res/android;
tools名稱空間:xmlns:tools="http://schemas.android.com/tools;
自定義名稱空間:xmlns:app="http://schemas.android.com/apk/res-auto"
二、名稱空間實踐
2.1 android名稱空間
android名稱空間包含了系統提供了很多屬性。在Android佈局檔案中,必須在根元素上定義這個名稱空間;
xmlns:宣告我們要開始定義一個名稱空間;xmlns:android="http://schemas.android.com/apk/res/android" ,如下: <RelativeLayout xmlns:qproject="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" qproject:id="@+id/activity_name_space" qproject:layout_width="match_parent" qproject:layout_height="match_parent" ... ... tools:context="com.qproject.knowledge.NameSpaceActivity"> <TextView qproject:layout_width="wrap_content" qproject:layout_height="wrap_content" qproject:text="namespace" /> </RelativeLayout>
qproject:namespace-prefix,實際就是名稱空間的名字;
http://schemas.android.com/apk/res/android:一個URI(統一資源標示符),值固定不變,相當於一個常量;
大家應該注意到了,佈局中名稱空間名字我們使用qproject:替代了android:,以qpoject:開頭的屬性便是引用了名稱空間http://schemas.android.com/apk/res/android中的屬性, 這樣也可以正常編譯執行;
2.2 tools名稱空間
2.2.1 tools名稱空間簡介
Android Studio在tools名稱空間支援各種屬性,來實現設計時功能(如在你的佈局中顯示哪個fragment)或者編譯時行為(如給你的XML資源使用哪種壓縮模式 )。當你構建你的app的時候,構建工具會移除這些屬性,所以對於你的APK的大小和執行時行為沒有影響。
為了使用這些屬性,在你想使用它們的每個XML檔案的根元素新增tools名稱空間—xmlns:tools="http://schemas.android.com/tool",如下所示:
2.2.2 tools名稱空間實踐<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ... ... tools:context="com.qproject.knowledge.NameSpaceActivity"> <TextView ... ... /> </RelativeLayout>
tools:ignore
該屬性為錯誤處理屬性,告知Lint工具忽略相關型別ID錯誤的檢測;
1.檢視滑鼠懸停在lint檢測錯誤處,彈框提示錯誤如下:
2.Alt+Enter(Eclipse快捷鍵)提示處理選擇,使用tools:ignore="ContentDescription"提示lint忽略該問題;
相關推薦
Android總結:名稱空間
在使用lint工具進行程式碼檢測的時候,有一個XML型別的報錯如下:Namespace declaration is never used(錯誤程式碼如下圖)。腦海裡突然浮現起一個名詞—名稱空間,由於一直以來對這個知識點理解不是很透徹,查閱相關資料並學習總結如下;一、名稱空間
Android開發小記:名稱空間錯誤導致自定義屬性不生效
前言 好久沒更新博文了,封閉開發一個多月,就問你怕不怕?最近在使用自定義控制元件的時候發現預覽有效果,可是執行起來就不展示,最後才發現自己的佈局中的名稱空間有問題,導致了控制元件屬性不生效。 名稱空間 名稱空間:namespace。在XML檔案中提供避免元
Android 總結:ContentProvider 的使用
表數據 internal throw 行數 遊標 客戶端使用 resolve 實例 什麽 一、概述 ContentProvider:為存儲和獲取數據提供統一的接口,可以在不同的應用程序之間共享數據。 Android內置的許多數據都是使用ContentProvider形式,供
【C++】:名稱空間的使用
名稱空間 在C/C++中,變數、函式和後面要學到的類都是大量存在的,這些變數、函式和類的名稱將都存在於全域性作用域中,可能會導致很多衝突。使用名稱空間的目的,是對識別符號的名稱進行本地化,以避免命名衝突或名字汙染,namespace關鍵字的出現就是針對這種問題的。
Python記錄9:函式4:名稱空間作用域+閉包函式+裝飾器
''' 一: 名稱空間namespaces 名稱空間就是存放名字與值繫結關係的記憶體空間 二: 名稱空間分為三種 內建名稱空間: 1. 特點: 存
HBase入門基本:名稱空間、建表、增刪改查
進入HBase資料庫 # hbase shell 注意HBase Shell 中的回格鍵沒用,要用【Ctrl+Backspace】,每個命令之後不需要分號(;)結束。 HBase幫助命令: hbase> help 'create' 名稱空間 列出所有名
【C++入門】:名稱空間的使用
名稱空間 在C/C++中,變數、函式和後面要學到的類都是大量存在的,這些變數、函式和類的名稱將都存在於全域性作用域中,可能會導致很多衝突。使用名稱空間的目的,是對識別符號的名稱進行本地化,以避免命名衝突或名字汙染,namespace關鍵字的出現就是針對這種問題的。
python學習彙總40:名稱空間和作用域及local,global,locals(),globals()區別 2018/11/16(推薦)tcy
python名稱空間和作用域及local,global,locals(),globals()區別 2018/11/16 目錄: 1.名稱空間及作用域的基本概念 1.1.模組級變數運用 2.變數的作用域 3.local,global,locals(),globals(
Android 總結:Manifest檔案中,application和activity標籤屬性詳解
一、application 標籤屬性 < application /> :應用的宣告。 這個元素包含了子元素,這些子元素聲明瞭應用的元件,元素的屬性將會影響應用下的所有元件。
C++:名稱空間,函式過載與預設引數
本篇部落格主要針對與c與c++不同的地方做以總結。 C++:在C的基礎上添加了一些新的特性 C++的學習主要分為以下幾個大的板塊。 - c - 類 & 物件 - 繼承 & 多型 - 模板 & 泛型程式設計 - 異常處理 -
Android總結:正確判斷當前的Fragment是顯示還是隱藏
1、當Fragment配合ViewPager使用時,使用setUserVisibleHint()判斷Fragment是顯示還是隱藏。 2、當Fragment配合FragmentTransition使用時,使用onH
菜鳥學Android筆記(九):Schema之名稱空間
邊看視訊邊寫筆記(粗略版) 一、Schema的概念 是一種約束XML的技術,可以克服DTD的侷限 與DTD的比較 XML Schema是xml的約束技術,出現的目的是為了替代dtd 本身也是一個xml,非常方便使用xml的解析引擎進行解析 對名稱空間有非常好的支援 支援更多
Android UsageStats:應用根據啟動次數、啟動時間、應用名稱排序
public each eno you when listen iss 技術 internal Android 7.1.1 developers/samples/android/system/AppUsageStatistics/Application/src/main/j
python之旅:函數對象、函數嵌套、名稱空間與作用域、裝飾器
分支 名稱空間 數據 返回值 特性 bsp 對象 body clas 一、函數對象 函數是第一類對象,即函數可以當作數據傳遞 #1 可以被引用 #2 可以當作參數傳遞 #3 返回值可以是函數 #3 可以當作容器類型的元素 # 利用該特性,優雅的取代多
Android項目實戰(十六):QQ空間實現(一)—— 展示說說中的評論內容並有相應點擊事件
con toast short demo append 集合 obj parent 自帶 原文:Android項目實戰(十六):QQ空間實現(一)—— 展示說說中的評論內容並有相應點擊事件大家都玩QQ空間客戶端,對於每一個說說,我們都可以評論,那麽,對於某一條評論:
Python:函數名稱空間與作用域:
int 直接 返回 nbsp 作用 返回值 local 解析 運行 Python:函數名稱空間與作用域 函數對象:(第一類對象) 定義:函數是第一類對象:函數名可以當做數據來使用 1.可以直接被引用,加()就能運行 def foo():
C#VS工程報錯:CS0234 名稱空間“Microsoft.VisualStudio”中不存在型別或名稱空間名“VCProjectEngine(是否缺少程式集引用)
問題截圖: 大多數的C#程式都是以using使用名稱空間開頭,但是我們使用名稱空間的同事也必須包含其程式集,比如大部分的名稱空間“XXXX”中不存在型別或名稱空間名“XXXXX”錯誤都是因為沒有在引用裡面新增其程式集,那麼怎麼新增程式集呢? 一、“檢視”----->“解決方案
typeScript(9):ts名稱空間
在製作大型應用的時候,為了讓程式更加有層次感和變數之間不互相干擾,我們可以使用名稱空間來構建程式。舉個小例子:比如“德華”這件事,帥哥也有叫德華的,二師兄也有叫德華的。那我們要如何區分那。 namespace shuaige{ export class Dehua{
Python全棧學習筆記day 23:面向物件2、名稱空間、組合
__init__方法 :初始化方法 python幫我們建立了一個物件self 每當我們呼叫類的時候就會自動觸發這個方法。預設傳self 在init方法裡面可以對self進行賦值 self: self擁有屬性都屬於物件 在類的內部,self就是一個物件 類可以
swift 名稱空間實現的設計思考:extension YKKit where Base == String
設計問題:誰來構造、構造什麼、怎麼新增新功能 關鍵詞:本體、客體、構造、對映、功能。 別名:橋接變數、型變變數、容器變數、適配變數,構造變數; 目的:新增名稱空間、新增新功能。 原則:不修改本體的實現。 原始版本: 在本體的擴充套件中,直接構造客體;客體的構造器輸入