1. 程式人生 > >Android總結:名稱空間

Android總結:名稱空間

在使用lint工具進行程式碼檢測的時候,有一個XML型別的報錯如下:Namespace declaration is never used(錯誤程式碼如下圖)。

腦海裡突然浮現起一個名詞—名稱空間,由於一直以來對這個知識點理解不是很透徹,查閱相關資料並學習總結如下;

一、名稱空間簡介
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: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>
  xmlns:宣告我們要開始定義一個名稱空間;
  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",如下所示:
<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>
2.2.2 tools名稱空間實踐
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

設計問題:誰來構造、構造什麼、怎麼新增新功能   關鍵詞:本體、客體、構造、對映、功能。 別名:橋接變數、型變變數、容器變數、適配變數,構造變數; 目的:新增名稱空間、新增新功能。 原則:不修改本體的實現。   原始版本: 在本體的擴充套件中,直接構造客體;客體的構造器輸入