2015-11-17 5 views
3


Это мой самый первый вопрос здесь, поэтому, пожалуйста, идти просто на меня;)Android вид пользовательского изображения, используя встроенные атрибуты

  1. Я построил мой пользовательский класс View расширения ImageView.

    public class CustomImageView extends ImageView { 
        // ... 
    } 
    
  2. Я создал набор пользовательских параметров для него в виде <declare-styleable> элемента в файле attrs.xml.

    <declare-styleable name="CustomImageView"> 
        <attr name="angle" format="integer"/> 
    </declare-styleable> 
    
  3. Я понял, как получить доступ (то есть считывать из класса и устанавливается внутри макета) этих значений.

    TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomImageView, 0, 0); 
    
    try { 
        a.getInt(R.styleable.CustomImageView_angle, 0); 
    } finally { 
        a.recycle(); 
    } 
    

    До сих пор так просто. Все вышесказанное прямо взято из guide.

Однако, я не мог понять, как получить доступ к наследуемым атрибутам ImageView класса. В частности, я хочу прочитать, что было установлено как атрибут srcImageView. Я предполагаю, что я должен использовать другое значение для второго параметра obtainStyledAttributes(...) вызова, но я не знаю, что использовать там, и это, очевидно, не работает:

a = context.getTheme().obtainStyledAttributes(attrs, ImageView, 0, 0); 

Итак, как получить доступ встроенные атрибуты моего суперкласса?
Как получить значение int (drawable res id), которое было установлено для атрибута android:src?

Благодарим за помощь!

+0

вы смотрели на то, что вы можете получить от "супер" указатель ли? – Nanoc

+0

Да. Существует метод 'getDrawable()', но он возвращает объект «Drawable», а не идентификатор ресурса int. Существует также метод 'setImageResource (int)', который делает точно противоположное тому, что я хочу. Эквивалент 'getImageResource()', похоже, не существует. – inedible

ответ

0

Как получить значение int (drawable res id), которое было установлено для атрибута android: src ?

Использование getAttributeResourceValue получить id из drawable:

public CustomImageView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    String android_schemas = "http://schemas.android.com/apk/res/android"; 
    int srcId = attrs.getAttributeResourceValue(android_schemas, "src", -1); 
} 
+1

Это выглядит немного взломанным для меня из-за всех строковых литералов, которые вы вставляете туда, вместо того, чтобы иметь какие-то константы, на которые нужно ссылаться, но он работает по назначению. Благодаря! – inedible

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