Eclipse не показывает мои пользовательские атрибуты (attrs.xml) - PullRequest
0 голосов
/ 05 июля 2011

Используя Eclipse, я создал простой проект Android, содержащий пользовательский компонент (MyTextView, унаследованный от android.widget.TextView ). После того, как я создал файл, attrs.xml, где я добавил атрибут к этому классу, как указано ниже:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyTextView" >
        <attr name="AttributeOne" format="integer"/>
    </declare-styleable>
</resources>

Я добавил объект в мой main.xml линейный макет:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mt="http://schemas.android.com/apk/res/myprogram.custom"
    android:orientation="vertical"
    android:layout_height="fill_parent" android:layout_width="fill_parent">
    <myprogram.custom.MyTextView
        android:text="MyTextView"
        android:id="@+id/myTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </myprogram.custom.MyTextView>
</LinearLayout>

Когда я открываю main.xml и выбираю вкладку «Графический макет», выбирая мой компонент, пользовательский атрибут отображается не на вкладке «Свойства» Eclipse, а в исходных атрибутах. класса наследования ( android.widget.TextView ) появляется.
Это ошибка? Какова процедура отправки моих пользовательских атрибутов? Или я ошибаюсь?

Спасибо. Лучано.

Ответы [ 2 ]

2 голосов
/ 31 мая 2013

Я только что перезапустил Eclipse, и это сработало!: D

0 голосов
/ 04 января 2015

Чтобы Инструменты разработчика Android могли взаимодействовать с вашим представлением, как минимум, вы должны предоставить конструктор, который принимает Context и AttributeSet объект какпараметры.Этот конструктор позволяет редактору макета создавать и редактировать экземпляр вашего представления.

class PieChart extends View 
{
    public PieChart(Context context, AttributeSet attrs)  
    {
        super(context, attrs);
    }
}

или, если все еще не удается решить, вы можете сделать это в своем пользовательском представлении:

if(!isInEditMode())
{
   // Your custom code that is not letting the Visual Editor draw properly
   // i.e. thread spawning or other things in the constructor
}

detail isInEditMode

...