Neden bu satır xmlns: android = “http://schemas.android.com/apk/res/android” düzen xml dosyasında ilk olmalı?


Yanıtlar:


118

XML'de xmlns bir Ad Alanı bildirir. Aslında, şunları yaptığınızda:

<LinearLayout android:id>
</LinearLayout>

Aramak yerine android:id , xml benzersiz olmak için http://schemas.android.com/apk/res/android:id adresini kullanır. Genellikle bu sayfa yoktur (URL değil URI'dır), ancak bazen kullanılan ad alanını açıklayan bir URL'dir.

Ad alanı, bir Java uygulamasındaki paket adıyla hemen hemen aynı kullanımlara sahiptir.

İşte bir açıklama.

Tekdüzen Kaynak Tanımlayıcısı (URI)

Tekdüzen Kaynak Tanımlayıcısı (URI), İnternet Kaynağını tanımlayan bir karakter dizesidir.

En yaygın URI, bir İnternet etki alanı adresini tanımlayan Tekdüzen Kaynak Konum Belirleyicisi'dir (URL). Çok yaygın olmayan başka bir URI türü de Evrensel Kaynak Adı'dır (URN).

Örneklerimizde yalnızca URL'leri kullanacağız.


13
Öyleyse neden android:layout_widthsadece yerine var layout_width?
Shashwat

4
O zaman nasıl "android: LinearLayout" yerine "LinearLayout" kullanıyoruz?
android geliştirici

Muhtemelen LinearLayout kök ad alanının bir parçası olduğundan ve android: xxx özellikleri bir alt ad alanının bir parçasıdır (" schemas.android.com/apk/res/android/android/id" )
NitroG42 30:13

4
: Elbette bu url getirir gelmez ki, bu din URI var w3schools.com/xml/xml_namespaces.asp
NitroG42

1
Gönderen danielmiessler.com/study/url_vs_uri :. "Bir URL URI türüdür birisi bir URL o yanlış bir URI olmadığını söyler Yani eğer olduğunu Ama hepsi URI'lerine URL'ler olduğu anlamına gelmez Tüm kelebekler uçmak, ama.. URI'yi URL yapan kısım “erişim mekanizması” veya “ağ konumu” nun dahil edilmesidir, örneğin http: /, ftp: //, ldap: //, telnet: / /, vb.
yonivav

37

xmlns:android=“http://schemas.android.com/apk/res/android”Düzen xml dosyasında neden ilk olması gerektiğini anlamak için Bileşenleri bir örnek kullanarak anlayacağız

Sample::

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container" >    
</FrameLayout>

Tekdüzen Kaynak Göstergesi (URI) :

  • Hesaplamada, tekdüze bir kaynak tanımlayıcısı (URI), bir kaynağın adını tanımlamak için kullanılan bir karakter dizisidir.
  • Böyle bir tanımlama, belirli protokoller kullanarak kaynağın bir ağ, genellikle World Wide Web üzerinden temsilleriyle etkileşime girmesini sağlar.

Örnek: http://schemas.android.com/apk/res/android:idURI burada


XML Ad Alanı :

  • XML ad alanları, bir XML belgesinde benzersiz olarak adlandırılmış öğeler ve öznitelikler sağlamak için kullanılır. xmlns:androidandroid ad alanını açıklar.
  • Bu böyle kullanılır çünkü bu, derleme zamanında hataları işlemek için google tarafından bir tasarım seçimidir.
  • Ayrıca , android'e göre textviewfarklı özelliklere sahip kendi widget'ımızı yazdığımızı varsayalım textview, android ad alanı, özel textviewwidget'ımız ve android textviewwidget'ımızı ayırt etmeye yardımcı olur

8
bu cevap "NEDEN?"
eRaisedToX

"Böyle bir tanımlama, belirli protokolleri kullanarak bir ağ üzerinden, genellikle World Wide Web'de kaynağın temsilleri ile etkileşime olanak tanır. Örn: schemas.android.com/apk/res/android:id burada URI'dır " - Ancak internet bağlantım yoksa, bu android ad alanı bir ağ üzerindeki kaynaklarla nasıl etkileşime girer?
kavie

29

xmlns, XML ad alanını

XML'de önekler kullanılırken, önek için ad alanı tanımlanmalıdır. Ad alanı, bir öğenin başlangıç ​​etiketindeki xmlns özniteliği tarafından tanımlanır. Ad alanı bildirimi aşağıdaki sözdizimine sahiptir. xmlns: öneki = "URI".

Not : Ad alanı URI'si ayrıştırıcı tarafından bilgi aramak için kullanılmaz.

Amaç, ad alanına benzersiz bir ad vermektir. Ancak, şirketler genellikle ad alanını ad alanı bilgilerini içeren bir web sayfasına işaretçi olarak kullanır.


7

Bu sadece XML Ad Alanı bildirimi. Aşağıda listelenen özelliklerin Android'e ait olduğunu belirtmek için bu Ad Alanını kullanıyoruz. Böylece " android: "

Aslında kendi özel niteliklerinizi oluşturabilirsiniz. Bu nedenle, 2 özniteliğin aynı şey olarak adlandırıldığı, ancak farklı davrandığı ad çakışmalarını önlemek için " android: , bunların Android öznitelikleri olduğunu belirtmek için " .

Bu nedenle, bu Ad Alanı bildirimi XML dosyanızın kök görünümünün açılış etiketine eklenmelidir.


Basit ve anlaşılır. Diğer cevapları bilmiyorum ama cevabınız karışıklığım için mıknatıs gibi çalışıyor ve konseptim şimdi açık.
Stack Overflow


3
  • Xmlns, xml ad alanı anlamına gelir.
  • XML'lerde ad çakışmaları önlemek için oluşturulur.
  • Çakışmaları başka bir şekilde adlandırmaktan kaçınmak için her öğeye bir önek sağlamalıyız.
  • her xml etiketinde önekin tekrar tekrar kullanılmasını önlemek için xml kökünde xmlns kullanırız. Bu nedenle xmlns etiketine sahibiz : android = ” http://schemas.android.com/apk/res/android
  • Şimdi android burada sadece " http://schemas.android.com/apk/res/android " ad alanını atadığımız anlamına geliyor .
  • Bu ad alanı bir URL değil, aynı zamanda URI yerine nadiren kullanılan URN (evrensel kaynak adı) olarak da bilinen bir URI'dir.
  • Bu android nedeniyle android olacaktır xml belgesinde android ile ilgili öğeleri tanımlamak sorumlu olacaktır: xxxxxxx vb. Bu ad alanı olmadan android: xxxxxxx tanınmayacaktır.

Layman'ın terimini koymak için:

xmlns olmadan: android = ” http://schemas.android.com/apk/res/android ” android ile ilgili etiketler düzenimizin xml belgesinde tanınmayacak.


2

XML'de, öğe adları geliştirici tarafından tanımlanır. Bu, farklı XML uygulamalarından XML belgelerini karıştırmaya çalışırken genellikle çakışmalara neden olur. Bir kullanıcı veya XML uygulaması bu farkların nasıl ele alınacağını bilemez. XML'de ad çakışmaları bir ad öneki kullanılarak kolayca önlenebilir. XML'de önek kullanırken, önek için bir ad alanı tanımlanmalıdır. Ad alanı, bir öğenin başlangıç ​​etiketinde bir xmlns özniteliği ile tanımlanabilir. Ad alanı bildirimi aşağıdaki sözdizimine sahiptir. xmlns: öneki = "URI".


2
xmlns:android="http://schemas.android.com/apk/res/android"

Bu xmlns biçimidir: android = "@ + / id". Şimdi referans almak için örneğin

android:layout_width="wrap_content"
android:text="Hello World!"

Başka bir xmlns

 xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns biçimindedir: app = "@ + / id" ve kullanımı aşağıda verilmiştir.

 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintLeft_toLeftOf="parent"

2

Kendi özelliklerimizi oluşturabileceğimiz ve kullanıcı tarafından belirtilen özellik Android ile aynı ise, ad alanının çakışmasını önlediğinden, ad alanı ile netleştiğini düşünüyorum.


2

xmlns: android Bu, Android'de android ad alanını tanımlamak için başlangıç ​​etiketidir. Bu standerd kural android google geliştirici tarafından tanımlanır. kullanırken ve düzen veya custome düzenini kullanırken, bu ad alanını kullanmanız gerekir.

Android ad alanını tanımlar. Bu özellik her zaman " http://schemas.android.com/apk/res/android " .

Gönderen <manifes>eleman belgelerinde .


1
xmlns:android="http://schemas.android.com/apk/res/android" 

xmlns : xml ad alanı ve URL: " http://schemas.android.com/apk/res/android " başka bir şey değildir

XSD[XML şema tanımı] olan : XML dosyası için kuralları tanımlar.

Misal :

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

<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginBottom="4dp"
   android:hint="User Name"
  />
</LinearLayout> 

Ne Tür Kuralları açıklayayım ? .

  1. Yukarıdaki XML dosyasında, düzenimiz için layout_width'i zaten tanımlıyoruz, ikinci kez bir hata alırsanız aynı özniteliği tanımlayacaksanız.
  2. EditText var ama başka bir EditText eklemek istiyorsanız sorun yok.

Bu tür kurallar XML XSD'de tanımlanmıştır: " http://schemas.android.com/apk/res/android "

biraz geç ama umarım bu sana yardımcı olur.


0

Yavaşlatıldığı görünüm grubunda bulunan özniteliklerin android ile ilgili olduğunu belirtmek için bir XML ad alanı bildirimidir.


daha ayrıntılı lütfen
Pramod S.Nikam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.