Как получить размер View элемента из атрибутов в android?

Использую кастомный View элемент основанный на RelativeLayout, в конструкторе получаю атрибуты, если размер указан в - "dp", то работает прекрасно, но если ставлю MATCH_PARENT, программа падает при инициализации, как получить размер, если указанно MATCH_PARENT, а не, к примеру, 150dp?

private void init(AttributeSet attrs, Context context)
{
	// Получаем список параметров
	int[] attrsArray = new int[] 
	{
		android.R.attr.id, 			// 0
	        android.R.attr.layout_width, 	// 1
		android.R.attr.layout_height  	// 2
	};
				
	final TypedArray typedArray = context.obtainStyledAttributes(attrs, attrsArray);
	    
	try 
	{
		// Получаем Id
		Id = typedArray.getResourceId(0, View.NO_ID);
		// Ширина
		m_nWidth  = typedArray.getDimensionPixelSize(1, 
                ViewGroup.LayoutParams.MATCH_PARENT);
	    	// Высота
		m_nHeight = typedArray.getDimensionPixelSize(2, 
                ViewGroup.LayoutParams.MATCH_PARENT);
	}
	catch(Exception ex)
	{
		m_nWidth = 200;
		m_nHeight = 200;
	}
	finally
	{
		// Освобождаем ресурсы
		typedArray.recycle();
	}
}


Конструктор:
public CustomView(Context context, AttributeSet attrs) 
{
	super(context, attrs);
	init(attrs, context);
}


Лог:

04-22 13:38:18.695: E/AndroidRuntime(1992): FATAL EXCEPTION: main java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x10 04-22 13:38:18.695: E/AndroidRuntime(1992): at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463) 04-22 13:38:18.695: E/AndroidRuntime(1992): at com.test.view.CustomView.init(CustomView.java:63) 04-22 13:38:18.695: E/AndroidRuntime(1992): at com.test.view.CustomView.(CustomView.java:26)
  • Вопрос задан
  • 3595 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы