android 資源應用的?和@符號解析

來源:互聯網
上載者:User

 一.@符合 

  @表示引用資源,聲明這是一個資源引用。格式:@[package:]type/name 
  例如:

      @android:string表明引用的系統的(android.*)資源 
      @string表示引用應用內部資源(自己定義的資源)

二.?問號

   ?表示引用屬性 
   當您使用這個標記,你所提供的資源名必須能夠在主題屬性中找到,因為資源工具認為這個資源屬性是被期望得到的,您不需要明確的指出它的類型(?android:attr/android:textDisabledColor)。 
  使用主題屬性 :
    另外一種資源值允許你引用當前主題中的屬性的值。這個屬性值只能在樣式資源和XML屬性中使用;它允許你通過將它們改變為當前主題提供的標準變化來改變UI元素的外觀,而不是提供具體的值。
    如例中所示,我們在布局資源中使用這個特性將文本顏色設定為標準顏色的一種,這些標準的顏色都是定義在基本系統主題中:

    Java代碼
    <?xml version="1.0" encoding="utf-8"?>
    <EditText id="text"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:textColor="?android:textDisabledColor"
        android:text="@string/hello_world" /> 
    注意,這和資源引用非常類似,除了我們使用一個“?”首碼代替了“@”。當你使用這個標記時,你就提供了屬性資源的名稱,它將會在主題中被尋找 ——因為資源工具知道需要的屬性資源,所以你不需要顯式聲明這個類型(如果聲明,其形式就是?android:attr/android:textDisabledColor)。
    除了使用這個資源的標識符來查詢主題中的值代替原始的資源,在這裡關於該類型的name文法:?[namespace:]typpe/name和“@”形式一樣,也是可選。

三。總結

@和?都是用來引用其他已經定義好的資源的。@引用的是之前定義好的資源當前項目或者android的framework裡。而?則是引用的當前載入的樣式檔案裡。意思就是說你在xml裡某行定義了一個資源,在下面某行需要引用這個資源時用?即可

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.