В настоящее время лучшей документацией является источник. Вы можете взглянуть на это здесь (attrs.xml) .
Вы можете определить атрибуты в верхнем элементе
или внутри элемента
. Если я собираюсь использовать attr более чем в одном месте, я помещаю его в корневой элемент. Обратите внимание, что все атрибуты имеют одно и то же глобальное пространство имен. Это означает, что даже если вы создадите новый атрибут внутри элемента
, его можно будет использовать вне его, и вы не сможете создать другой атрибут с тем же именем другого типа.
Элемент
имеет два атрибута xml name
и format
. name
позволяет вам называть это чем-то, и именно так вы в конечном итоге ссылаетесь на это в коде, например, R.attr.my_attribute
. Атрибут format
может иметь разные значения в зависимости от типа атрибута, который вы хотите.
Вы можете установить формат для нескольких типов, используя |
, например, format="reference|color"
.
Атрибуты
enum
могут быть определены следующим образом: атрибуты
flag
похожи, за исключением того, что необходимо определить значения, чтобы их можно было объединить в биты:
В дополнение к атрибутам есть элемент
. Это позволяет вам определять атрибуты, которые может использовать пользовательский вид. Вы делаете это, указывая элемент
, если он был определен ранее, вы не указываете format
. Если вы хотите повторно использовать атрибут Android, например, Android: gravity, то вы можете сделать это в name
следующим образом.
Пример настраиваемого представления
:
При определении пользовательских атрибутов в XML для настраиваемого представления необходимо выполнить несколько действий. Сначала вы должны объявить пространство имен, чтобы найти ваши атрибуты. Вы делаете это с корневым элементом макета. Обычно есть только xmlns:android="http://schemas.android.com/apk/res/android"
. Теперь вы также должны добавить xmlns:whatever="http://schemas.android.com/apk/res-auto"
.
Пример:
Наконец, для доступа к этому пользовательскому атрибуту вы обычно делаете это в конструкторе вашего пользовательского представления следующим образом.
public MyCustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, defStyle, 0);
String str = a.getString(R.styleable.MyCustomView_my_custom_attribute);
//do something with str
a.recycle();
}
Конец. :) [Тысяча сто сорок семь]
Поскольку вы перемещаете и # inner-1
, и # inner-2
, вам понадобится очистка . По сути, установка overflow: auto
для родительского элемента ( #wrapper
) должна помочь.
Как уже было сказано, вам нужен какой-то способ заставить содержащий div понять, что плавающие div занимают место. Обычно известная как очистка поплавка, в Интернете ведется довольно много дискуссий по этой теме.
Этот пост на pathf.com является одним из наиболее популярных. Когда вы читаете статью, обязательно прочтите все комментарии.
.
.
.
<div id="inner-2" style="float:left; width:49%; border:dotted #CC3300;">
content inside inner-2 div
</div>
<br style="clear:both" />
</div>
.
.
.
Try that.
You can set the margins for the
so that it is hardly visible too.
It is the floats that are giving you the problem. this might work for you:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> Nested divs </title>
</head>
<body>
<div id="wrapper" style="margin-left:auto; margin-right:auto; border:solid #669933;">
content inside "wrapper" div
<div id="inner-1" style="float:left; width:49%; border:dotted #CC3300;">
content <br />
inside <br />
inner-1 div
</div>
<div id="inner-2" style="float:left; width:49%; border:dotted #CC3300;">
content inside inner-2 div
</div>
<div style="clear: both"></div>
</div>
</body>
</html>
Added "div style="clear: both">" at the bottom of the containing DIV.
It might also be worth noting that there are a few different methods of "clearing floats" out there. This one works pretty well for me and only involves adding a single class to the parent element:
.clearfix:after{content:"\0020";display:block;height:0;clear:both;
visibility:hidden;overflow:hidden;}