Missing android xml namespace

Programming VIP

Very Interesting Programming

Namespaces for XML in Android

Introduction to basic concepts

Namespace

XML namespaces provide a way to avoid element naming conflicts.

For example, there is a student named Lin Xiaoming in School A and a student named Lin Xiaoming in School B. How can we identify these two students with the same name? Namespace will come in handy at this time. A and B can then be considered namespaces. In other words, the namespace contains a collection of specific attributes.

Common Namespaces in Android

The following sections introduce android, tools, and app (custom namespaces), which are common namespaces.

1,android

xmlns:android=»http://schemas.android.com/apk/res/android»
In the Android layout file, we all have to define such a namespace on the root element. Next, we will explain this line of code one by one.
xmlns: xml namespace, declaring that we are going to start defining a namespace
The string in which android is located, which we call namespace-prefix, actually means giving the namespace a name.
http://schemas.android.com/apk/res/android This looks like a URL, but this address is not accessible. In fact, this is a URI (Unified Resource Identifier), so its value is fixed, equivalent to a constant.

With him, you will be prompted to enter something, which can also be understood as a grammar file.

So what does this line of code do? The attributes in the namespace that we write in the code for the root element can be referenced, such as:

In this layout, as long as the attribute begins with android: it refers to the attribute in the namespace. As mentioned above, Android gives the namespace a name, just like we usually define variables, so the name can also be taken as our favorite. For example, if I take it as myns, then the code above We can also write as follows:

2,tools

Next, I will introduce three ways to use tools, which are also his characteristics.

2.1. tools only works at the development stage

We can think of him as a tool namespace, a tool to help developers. It only works at the development stage. When an app is packaged, all tools attributes will be discarded!

For example, basically in the android namespace, we want to test the effect of a component on the screen at the coding stage, and when app is installed on the phone, discard this code, then we can replace android with tools namespace:

This is the layout in the layout. When we switch to the view window (Design), we see that the top of the label is centered.

Then, when we run it on our mobile phone, it’s like this:

As shown above, tools:layoutgravity= «center» is indeed abandoned behind the runtime!

2.2. Viewing Activity Layout Effect in tools:context Development

The use of context is followed by the full package name of an Activty. What does it do?

When we set an Activity theme, it is set in AndroidManifest.xml, and the effect of the theme can only be displayed in Activty after running. With the help of context attribute, we can see the effect of the theme set in Activity in the layout in the development stage.
tools:context=»com.littlehan.myapplication.MainActivity»
By adding this line of code to the layout, you can see the effect of binding the theme to MainActivity in the design view.

Читайте также:  Winx club для андроид

2.3. Viewing fragment layout effect in tools:layout development

When we load a fragment on Activity, we need to see the effect after loading after running. Is there a way to display it in the layout preview window during the testing phase? The answer is yes, with the help of the layout attribute, for example,
Add such a line of code to the layout:
tools:layout=@layout/yourfragmentlayoutname
In this way, your fragment layout will be previewed on the specified main layout.

3. Customizing Namespaces

If you use DataBinding, you will use the app attribute in xml, which is actually a custom namespace.

Some friends may ask, where is the reflection of self-definition?

In fact, it can also be written as follows:
xmlns:app=»http://schemas.android.com/apk/res/ Complete package name»
Just fill in our package name after res/ However, in my own Android Studio 2.0, this is not recommended, so it is more recommended that you use the first naming method.

Usually custom namespaces are inseparable from custom views. When Android’s own controls can’t meet our needs, we will draw some views ourselves. When we add custom attributes to these customized views, we need to create our own namespaces.

As I said at the beginning, the namespace contains a collection of specific attributes, so the idea is clear, that is to say, the actual process of customizing a namespace is to customize attributes.

We learn about custom namespaces through a simple custom TextView. The process of customizing the View can be divided into the following steps:

Inheriting View Class

Create a class named CustomTextView Inheritance View
(View is the parent class of all views) and implements its three constructions

Drawing Views

Overload the onDraw() method to draw a paragraph of text

Use custom layout

Introducing custom controls into layout

Here, a custom control is introduced into the layout, and we can switch to the view window to see the effect.

But this custom control can not change the font color, font size, custom text and so on in xml. The implementation of this function is actually the process of creating custom attributes in XML and parsing attributes in custom View s.

Custom Properties

Create a new xml file named attrs under the values root directory to customize our attributes (the attributes defined here are the attributes in our custom namespace)

Name defines the name of an attribute
format defines the type of attribute

Parsing attributes

Resolve these attributes in CustomeTextView

Use custom properties

To use custom attributes, you need to customize the attribute namespace by inserting such a line of code under the root element of the layout file:
xmlns:app=»http://schemas.android.com/apk/res-auto»

So we can use custom attributes:

Switch to the view preview window and you can see that the custom properties are in effect:

summary

In Android, namespaces can be divided into three categories:

Among them, the attributes in 1 and 2 namespaces are encapsulated by the system, and the attributes in the third namespace are user-defined.

Added by vijayfreaks on Thu, 18 Jul 2019 04:11:20 +0300

Источник

Почему мы указываем пространство имен в файле android xml?

Когда мы пишем макет на основе xml в Android, мы используем строку «xmlns: android =» http://schemas.android.com/apk/res/android ».

Из прочитанных мной книг говорится, что это пространство имен, но почему мы это используем? Ссылка даже не существует. Так в чем же польза от этого?

Читайте также:  Android messaging shows message

Определяет пространство имен Android. Этот атрибут всегда должен быть установлен на «http://schemas.android.com/apk/res/android».

Xmlns: android для идентификации того, что этот xml используется для android, а не для другой функции.

Пространства имен однозначно идентифицируют код / ​​библиотеки. Если я пишу api, который использует все те же имена и такие как android api, единственный способ отличить api от api и android api – использовать пространство имен android или мое.

Возможно, вы захотите сделать некоторое общее чтение по XML. XML-документация w3.org может быть лучше всего.

В общем случае пространства имен используются так, что у вас нет столкновений между именами элементов.

Например, если я создал XML-схему, которая определила элемент

а мой друг создал отдельную схему XML, которая определила совершенно другой элемент, также называемый

, мы могли бы столкнуться. Если бы я попытался ссылаться на оба элемента в файле XML, не было бы способа определить, какой из них был. Однако, если мы используем пространства имен, myNamespace: person явно отличается от myFriendsNamespace: person.

Стандартом для определения пространства имен является использование URI, поэтому вы видите это в определении Android. Это не обязательно означает, что схема существует в этом месте, это означает, что URI является уникальным именем для этого пространства имен.

Это правда, что ссылка не существует. Но строка, которую мы используем, предназначена для объявления пространства имен … В XML пространства имен используются, чтобы избежать конфликтов имен. Вы можете сослаться на эту ссылку для получения дополнительной информации http://www.w3schools.com/XML/xml_namespaces.asp

Поскольку вы собираетесь ссылаться на android, определяйте ключи в своем XML. Поэтому ресурсы идентифицируют ключ с пространством имен, поэтому мы определяем пространство имен в каждом файле Android XML, например: «xmlns:android=»http://schemas.android.com/apk/res/android».

Теперь в XML вы можете ссылаться на ключи, используя тег android, например: –

Используя пространство имен android, вы можете найти ключи id , layout_width и layout_height .

Для получения дополнительной информации см. Здесь .

Источник

Почему мы указываем пространство имен в xml-файле android?

когда мы пишем макет на основе xml в Android, мы используем строку » xmlns:android=»http://schemas.android.com/apk/res/android».

из книг, которые я читал, говорится, что это пространство имен, но почему мы используем это? Связь даже не существует. Так какой в этом смысл?

4 ответов

определяет пространство имен Android. Этот атрибут всегда должен быть установлен в «http://schemas.android.com/apk/res/android».

xmlns:android предназначен для идентификации, что этот xml используется для android, а не для других функций.

пространства имен однозначно идентифицируют код / библиотеки. Если я пишу api, который использует все те же имена и, например, api android, единственный способ отличить мой api от Android api должен использовать пространство имен android или мое.

вы можете сделать некоторые общие чтения на XML. w3.org с XML-документации может быть ваш лучший.

в целом, однако, пространства имен используются, чтобы у вас не было конфликтов между именами элементов.

например, если я создал XML-схему, которая определяет элемент

и мой друг создал отдельную XML-схему, которая определила совершенно другой элемент, который также был назван

, мы можем столкнуться. Если бы я попытался . ссылка на оба элемента в XML-файле, не было бы никакого способа узнать, какой из них был. Однако если мы используем пространства имен, myNamespace:person явно отличается от myFriendsNamespace: person.

стандартом для определения пространства имен является использование URI, поэтому вы видите это в определении Android. Это не обязательно означает, что схема существует в этом месте, это означает, что URI-это уникальное имя в пространстве имен.

Это правда, что ссылка не существует..Но строка, которую мы используем, предназначена для объявления пространства имен. В XML пространства имен используются для предотвращения конфликтов имен. Вы можете обратиться к этой ссылке для получения дополнительных разъяснений http://www.w3schools.com/XML/xml_namespaces.asp

Читайте также:  Где найти смайлики для андроид

Как вы собираетесь ссылаться на android определить ключи в вашем XML. таким образом, ресурсы будут идентифицировать ключ с пространством имен, поэтому мы определяем пространство имен в каждом XML-файле Android, например: — «xmlns:android=»http://schemas.android.com/apk/res/android».

теперь в XML вы можете ссылаться на ключи, используя тег android, как: —

используя пространство имен android, вы можете найти ключи id,layout_width и layout_height.

для Больше информации пожалуйста см. здесь.

Источник

Файл манифеста AndroidManifest.xml

Файл манифеста AndroidManifest.xml предоставляет основную информацию о программе системе. Каждое приложение должно иметь свой файл AndroidManifest.xml. Редактировать файл манифеста можно вручную, изменяя XML-код или через визуальный редактор Manifest Editor (Редактор файла манифеста), который позволяет осуществлять визуальное и текстовое редактирование файла манифеста приложения.

Назначение файла

  • объявляет имя Java-пакета приложения, который служит уникальным идентификатором;
  • описывает компоненты приложения — деятельности, службы, приемники широковещательных намерений и контент-провайдеры, что позволяет вызывать классы, которые реализуют каждый из компонентов, и объявляет их намерения;
  • содержит список необходимых разрешений для обращения к защищенным частям API и взаимодействия с другими приложениями;
  • объявляет разрешения, которые сторонние приложения обязаны иметь для взаимодействия с компонентами данного приложения;
  • объявляет минимальный уровень API Android, необходимый для работы приложения;
  • перечисляет связанные библиотеки;

Общая структура манифеста

Файл манифеста инкапсулирует всю архитектуру Android-приложения, его функциональные возможности и конфигурацию. В процессе разработки приложения вам придется постоянно редактировать данный файл, изменяя его структуру и дополняя новыми элементами и атрибутами.

Корневым элементом манифеста является . Помимо данного элемента обязательными элементами является теги и . Элемент является основным элементом манифеста и содержит множество дочерних элементов, определяющих структуру и работу приложения. Порядок расположения элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы.

Описание

Элемент является корневым элементом манифеста. По умолчанию Eclipse создает элемент с четырьмя атрибутами:

Атрибуты

объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к вашему приложению. Приложение может также защитить свои собственные компоненты (деятельности, службы, приемники широковещательных намерений и контент-провайдеры) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.

android:name название разрешения android:label имя разрешения, отображаемое пользователю android:description описание разрешения android:icon значок разрешения android:permissionGroup определяет принадлежность к группе разрешений android:protectionLevel уровень защиты

Элемент запрашивает разрешение, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.

android:name имеет единственный атрибут с именем разрешения android:name. Это может быть разрешение, определенное в элементе

данного приложения, разрешение, определенное в другом приложении или одно из стандартных системных разрешений, например: android:name=»android.permission.CAMERA» или android:name=»»android.permission.READ_CONTACTS»

Наиболее распространенные разрешения

  • INTERNET — доступ к интернету
  • READ_CONTACTS — чтение (но не запись) данных из адресной книги пользователя
  • WRITE_CONTACTS — запись (но не чтение) данных из адресной книги пользователя
  • RECEIVE_SMS — обработка входящих SMS
  • ACCESS_COARSE_LOCATION — использование приблизительного определения местонахождения при помощи вышек сотовой связи или точек доступа Wi-Fi
  • ACCESS_FINE_LOCATION — точное определение местонахождения при помощи GPS

объявляет базовое имя для дерева разрешений. Этот элемент объявляет не само разрешение, а только пространство имен, в которое могут быть помещены дальнейшие разрешения.

определяет имя для набора логически связанных разрешений. Это могут быть как объявленные в этом же манифесте с элементом

разрешения, так и объявленные в другом месте. Этот элемент не объявляет разрешение непосредственно, только категорию, в которую могут быть помещены разрешения. Разрешение можно поместить в группу, назначив имя группы в атрибуте permissionGroup элемента

Источник

Оцените статью