2013-02-03 1 views
3

Для определения ImageView доступно несколько конструкторов. Для примераИспользование конструктора ImageView

1) public ImageView (Context context) 
2) public ImageView (Context context, AttributeSet attrs) 
3) public ImageView (Context context, AttributeSet attrs, int defStyle)** 

Я запутался в использовании 2-го и 3-го типа конструктора. в основном я не знаю, что передать вместо AttributeSet. Просьба предоставить пример кодирования.

+1

последних двух конструкторов очень полезно, когда и делает пользовательский вид. вы можете увидеть [это] (http://droid-blog.net/2012/04/24/how-to-add-attributes-to-your-custom-view/) пример –

+0

AttributeSet означает, что мы хотим добавить любые новый атрибут CustomView, например ImageView View по умолчанию имеют Android: id, android: src, ... ', и теперь я хочу добавить атрибут' myimageview: secondsrc', а затем создать xml для AttributeSet. я думаю, теперь ясно. –

ответ

1

Пути создания ImageView, ImageView с контекстом

ImageView image= new ImageView(context); 

Здесь, если вы хотите установить значение, как высоту, ширину тяжесть и т.д. вам нужно установить

image.set****(); 

на основе количества атрибутов, не нужно использовать методы setXXX().

2.Используя набор атрибутов вы можете определить набор атрибутов, как высоту, ширину и т.д. в вашем Резе/значениях папки в отдельном файле XML, передать файл XML в getXml()

XmlPullParser parser = resources.getXml(yourxmlfilewithattribues); 
AttributeSet attributes = Xml.asAttributeSet(parser); 
ImageView image=new ImageView(context,attributes); 

Здесь вы также можете определить свой пользовательские атрибуты ваш xml. и вы можете получить доступ к с помощью методов, представленных на примере класса AttributeSet

getAttributeFloatValue(int index, float defaultValue) 

// Возвращает значение с плавающей точкой атрибута в «индексе»

+1

Pragnani, можете ли вы предоставить подробную информацию о XML, в котором присутствуют атрибуты. –

2

Эти конструкторы определены в документации View. Ниже приведено описание параметров из View(Context, AttributeSet, int):

Параметры

  • контекст         Контекст вид работает в, с помощью которого он может получить доступ к текущей теме ресурсы и т. д.
  • attrs                 Атрибуты тега XML, который раздувает представление.
  • defStyle         Стиль по умолчанию, применяемый к этому виду. Если 0, стиль не будет применяться (помимо того, что включено в тему). Это может быть либо быть ресурсом атрибута, значение которого будет извлекаться из текущей темы, либо явным ресурсом стиля.

Стоит отметить, что вы можете проход null на месте более AttributeSet, если у вас нет атрибутов, чтобы пройти.

С точки зрения кодирования AttributeSet, вот немного кода я использую для пользовательского класса TextView у меня есть:

public EKTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // ... 
    if (attrs != null) { 
     TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LocalTextView); 
     determineAttrs(context, a); 
    } 

    // ... 
} 
private void determineAttrs(Context c, TypedArray a) { 
    String font = a.getString(R.styleable.fontName); 
    if (font != null) 
     mTypeface = Typeface.createFromAsset(c.getAssets(), "fonts/" + font); 

    mCaps = a.getBoolean(R.styleable.allCaps, false); 
} 

Как вы можете видеть, как только вы получите TypedArray от атрибутов, вы можете просто используйте its various methods для сбора каждого из атрибутов. Другой код, который вы можете просмотреть, - that of View(Context, AttributeSet, int) или Resources.obtainStyledAttributes(AttributeSet, int[], int, int).

Смежные вопросы