Как получить цвета по умолчанию на Android
У меня есть пользовательский компонент, который я хочу дать тем же цветом, что и TextView.
То есть, я не хочу копировать свои цвета, я хочу получить цвета фона по умолчанию и переднего плана, если есть такая концепция для android.
[изменить]
Следующее, кажется, дает цвет текста моего TextView. Но разве это просто удача? Мне неинтересно, что TextView по умолчанию использовал бы android.R.attr.textColorSecondary
? И почему resolveAttribute
не возвращает цвет напрямую?
TypedValue tv = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.textColorSecondary, tv, true);
Color holyColor = getResources().getColor(tv.resourceId);
[изменить]
Я нашел исходный код TextView в android.git.kernel.org, но, похоже, он содержит много ссылок на com.android.internal.R
, которые я не думаю, что я должен использовать в своем коде. В настоящее время я ищу какие-то доказательства того, что TextView
использует android.R.attr.textColorSecondary
.
[изменить]
Я нашел какое-то доказательство в developer.android.com, в styles.xml, что TextView
использует android.R.attr.textAppearanceSmall
. textAppearanceSmall
документируется по умолчанию как "цвет вторичного текста".
Думаю, мне повезло, но мне все еще не нравится этот маленький фрагмент кода.
Ответы
Ответ 1
То, что вы ищете, это атрибуты. Атрибуты связывают виджеты со стилями. Например, android:background
- это то, что вы установили для определенного вида, но там атрибуты, такие как android:panelBackground
и android:windowBackground
, которые вы можете использовать переопределить для воздействия на систему в целом.
Вы должны просмотреть R.attr, а затем ссылку на эти атрибуты в своем виджете. Должно быть несколько из них, которые связаны с TextView; было бы целесообразно загрузить исходный код Android и посмотреть, какие атрибуты используются.