Таким образом, я озирался и узнал это android.R.styleable
больше не часть SDK даже при том, что это все еще документируется здесь.
Это действительно не было бы проблемой, если бы она была ясно зарегистрирована, какова альтернатива. Например, Календарное Приложение AOSP все еще использует android.R.styleable
// Get the dim amount from the theme
TypedArray a = obtainStyledAttributes(com.android.internal.R.styleable.Theme);
lp.dimAmount = a.getFloat(android.R.styleable.Theme_backgroundDimAmount, 0.5f);
a.recycle();
Таким образом, как можно было бы добраться backgroundDimAmount
не добираясь int[]
от android.R.styleable.Theme
?
Во что я должен вонзиться obtainStyledAttributes(int [])
чтобы заставить его работать с SDK?
Demo CustomView API показывает, как получить атрибуты в стиле. Код для представления здесь:
Стильный массив, используемый для извлечения текста, цвета и размера, определен в разделе
, здесь:
you можно использовать
, чтобы определить любой список атрибутов, которые вы хотите получить в группу, содержащую свои собственные и те определяется платформой.
Что касается этих вещей в документации, вокруг стильных массивов есть много Java Doc, которое позволяет им полезно иметь в документации, поэтому они были там оставлены. Однако в качестве изменений массивов, таких как добавляемые новые атрибуты, значения констант могут измениться, поэтому на платформе нельзя быть в SDK (и, пожалуйста, используйте какие-либо трюки, чтобы попытаться получить доступ к ним). Не должно быть не нужно использовать платформу в любом случае, потому что они каждая из них только для реализации частей структуры, и это тривиально создавать свои собственные, как показано здесь.
Это, кажется, ошибка в SDK. Я подал проблему , что вы можете захотеть звездочку, чтобы получать обновления на нем.
В качестве оборота вы можете использовать отражение для доступа к полю:
Class clazz=Class.forName("android.R$styleable");
int i=clazz.getField("Theme_backgroundDimAmount").getInt(clazz);