LINUX.ORG.RU
ФорумMobile

android: достать цвет из стиля, и выставить в android:tint, через xml

 ,


0

1

есть ImageView в layout, использующемся в RemoteViews.

соответственно, поменять цвет tint из кода нельзя (потому что собсно View создается в другом процессе)

надо выставить цвет, определенный в теме.

стиль называется TextAppearance.StatusBar.EventContent

в нем есть item: <item name=«textColor»>#999999</item>

вот это значение и нужно выставить через android:tint="??????"

вот собственно сами стили https://android.googlesource.com/platform/frameworks/base/ /refs/heads/master...

помогите, кто может.

или подскажите, если таки это из кода можно сделать.

★★★★★

Последнее исправление: waker (всего исправлений: 3)

upd: пока решил это костылем, вот так: android:tint="?android:textColorPrimaryInverse"

наверняка где-то цвета «не совпадут», но на основных версиях андроида должно работать.

неужели никто не знает?

waker ★★★★★
() автор топика

Тебе надо, чтоб ImageView имела tint на основе цвета текста из TextAppearance.StatusBar.EventContent?

Deleted
()
Ответ на: комментарий от waker

Пока вижу только такое решение: наследоваться от ImageView, из аттрибутов читать textColor, в лейауте задать стиль с аттрибутом textColor:

public class TintImageView extends ImageView {

    public TintImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        if (attrs != null) {
            int[] attrARr = new int[]{android.R.attr.textColor};
            TypedArray tarr = context.obtainStyledAttributes(attrs, attrARr);
            ColorStateList color = tarr.getColorStateList(0);
            setImageTintList(color);
        }
    }

}

Deleted
()
Последнее исправление: Sidius (всего исправлений: 1)
Ответ на: комментарий от Deleted

во-первых, твой пример просто меняет tint на custom color из кода. это я могу сделать и без кода, просто написав android:tint="?textColor". вопрос был вообще не об этом.

во-вторых, в RemoteViews, насколько я помню, нельзя использовать custom widgets, поэтому не получится создать объект из твоего TintImageView.

в любом случае, несмотря на то, что тема не решена - я уже забил болт, и захардкодил цвета копи-пастой из системных style.xml для android<5 и android>=5.

даже не знаю, отмечать тему как решенную или нет.

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.