Подтвердить что ты не робот

Как получить цвета по умолчанию на 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 документируется по умолчанию как "цвет вторичного текста".

Думаю, мне повезло, но мне все еще не нравится этот маленький фрагмент кода.

4b9b3361

Ответ 1

То, что вы ищете, это атрибуты. Атрибуты связывают виджеты со стилями. Например, android:background - это то, что вы установили для определенного вида, но там атрибуты, такие как android:panelBackground и android:windowBackground, которые вы можете использовать переопределить для воздействия на систему в целом.

Вы должны просмотреть R.attr, а затем ссылку на эти атрибуты в своем виджете. Должно быть несколько из них, которые связаны с TextView; было бы целесообразно загрузить исходный код Android и посмотреть, какие атрибуты используются.