Вложенные элементы DIV

В настоящее время лучшей документацией является источник. Вы можете взглянуть на это здесь (attrs.xml) .

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

Элемент имеет два атрибута xml name и format. name позволяет вам называть это чем-то, и именно так вы в конечном итоге ссылаетесь на это в коде, например, R.attr.my_attribute. Атрибут format может иметь разные значения в зависимости от типа атрибута, который вы хотите.

  • ссылка - если она ссылается на другой идентификатор ресурса (например, "@ color / my_color", "@ layout / my_layout")
  • color
  • логический
  • ]
  • размерность
  • число с плавающей запятой
  • целое число
  • строка
  • дробь
  • перечисление - обычно неявно определяется
  • flag - обычно неявно определяется

Вы можете установить формат для нескольких типов, используя |, например, 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();
}

Конец. :) [Тысяча сто сорок семь]

19
задан xraminx 6 July 2009 в 15:35
поделиться

5 ответов

Поскольку вы перемещаете и # inner-1 , и # inner-2 , вам понадобится очистка . По сути, установка overflow: auto для родительского элемента ( #wrapper ) должна помочь.

32
ответ дан 30 November 2019 в 03:08
поделиться

Как уже было сказано, вам нужен какой-то способ заставить содержащий div понять, что плавающие div занимают место. Обычно известная как очистка поплавка, в Интернете ведется довольно много дискуссий по этой теме.

Этот пост на pathf.com является одним из наиболее популярных. Когда вы читаете статью, обязательно прочтите все комментарии.

2
ответ дан 30 November 2019 в 03:08
поделиться
.
.
.
 <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.

4
ответ дан 30 November 2019 в 03:08
поделиться

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.

3
ответ дан 30 November 2019 в 03:08
поделиться

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;}
2
ответ дан 30 November 2019 в 03:08
поделиться