2014-10-17 3 views
0

Я расширил ViewGroup и создал пользовательский класс Layout в Android. У меня также есть некоторые пользовательские атрибуты XML, определенные для помощи в позиции subviews. Мне нужно получить доступ к нескольким настраиваемым атрибутам xml (custom: view_height и custom: view_width) в корневом элементе XML (настраиваемый макет), но когда я пытаюсь получить к ним доступ из класса макета Layout, TypedArray имеет значение null, это похоже на не могут их видеть. Они отлично справляются с взглядами ребенка. Любые мысли о том, как я могу получить доступ к пользовательским атрибутам XML из корневого каталога? Благодаря!Доступ к пользовательским атрибутам XML из корневого элемента

См код:

<?xml version="1.0" encoding="utf-8"?> 
<package.of.my.CustomLayout xmlns:android="http://schemas.android.com/apk/res/android" 
             xmlns:custom="http://schemas.android.com/apk/res-auto" 
             android:layout_height="match_parent" android:layout_width="match_parent" 
             android:orientation="vertical" 
             android:background="@drawable/homecell_selector" 
             custom:view_width="400" // I need this!! 
             custom:view_height="200" // I need this!! 
             > 

<Button android:id="@+id/postText" android:layout_marginLeft="20dp" 
             android:layout_marginTop="45dp" android:layout_height="wrap_content" 
             android:layout_width="wrap_content" android:alpha="1" 
             android:background="@color/HEX_FFFFFFFF" android:textColor="@color/HEX_000" 
             android:textSize="15sp" android:visibility="visible" android:gravity="left" 
             custom:view_width="0.87610022270753" 
             custom:eHeight="true" 
             custom:view_height="0.44296926842493" 
             custom:eWidth="true" 
             custom:originX="RIGHT" 
             custom:x="0.061399777292469" 
             custom:eX="true" 
             custom:originY="BOTTOM" 
             custom:y="0.1682145166653" 
             custom:eY="true"/> 

<Button android:id="@+id/firstNameLastNameShortText" android:layout_marginLeft="21dp" 
             android:layout_marginTop="8dp" android:layout_height="18dp" 
             android:layout_width="276dp" android:alpha="1" 
             android:background="@color/HEX_2087fc" android:textColor="@color/HEX_000" 
             android:textSize="15sp" android:visibility="visible" android:gravity="left" 
             custom:view_width="0.86433765030597" 
             custom:eHeight="true" 
             custom:view_height="0.15716154473749" 
             custom:eWidth="true" 
             custom:originX="LEFT" 
             custom:x="0.065625" custom:eX="true" 
             custom:originY="TOP" 
             custom:y="0.069849575438883" 
             custom:eY="true"/> 
</package.of.my.CustomLayout> 
+0

Как вы пытаетесь получить доступ к своим пользовательским атрибутам? Можете ли вы опубликовать код? – alanv

+0

'Свойства TypedArray = myContext.obtainStyledAttributes (attrs, package.of.my.project.R.styleable.Custom); view_height = properties.getFloat (package.of.my.project.R.styleable.Custom_view_height, view_height); ' , но свойства пустые. –

+0

Является ли TypedArray нулевым, как вы говорите в сообщении, или getFloat() возвращает значение по умолчанию? Кроме того, вы вызываете это из конструктора для своего CustomLayout или где-то еще? – alanv

ответ

1

На самом деле вам не нужны те. Потому что вам нужна ширина и высота. И какую бы ширину и высоту вы не хотели добавлять в свой пользовательский вид, вы должны добавить их непосредственно в теги android: layout_width и android: layout_height.

+0

Спасибо, Майк. Хотя я использовал собственный xml, называемый view_height и width, они являются просто произвольным примером. Я понимаю, что вы используете андроид: layout_height и width для этого. Зная это, есть ли какой-либо способ узнать доступ к пользовательской XML-информации из корневого представления? Благодаря! –