Я расширил 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>
Как вы пытаетесь получить доступ к своим пользовательским атрибутам? Можете ли вы опубликовать код? – alanv
'Свойства 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); ' , но свойства пустые. –
Является ли TypedArray нулевым, как вы говорите в сообщении, или getFloat() возвращает значение по умолчанию? Кроме того, вы вызываете это из конструктора для своего CustomLayout или где-то еще? – alanv