Зависящие от темы чертежи в compose

#android-studio #themes #drawable #android-jetpack-compose

Вопрос:

Я переношу проект для создания, и я наткнулся на этот рисунок, который меняет свои цвета в зависимости от темы

 lt;vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="70dp" android:height="70dp" android:viewportWidth="70" android:viewportHeight="70"gt; lt;path  android:fillColor="@color/color_surface"  android:pathData="M35,35m-35,0a35,35 0,1 1,70 0a35,35 0,1 1,-70 0" /gt; lt;path  android:fillColor="@color/sync_profile_fill"  android:pathData="M35,35m-35,0a35,35 0,1 1,70 0a35,35 0,1 1,-70 0" /gt; lt;path  android:fillColor="@color/transparent"  android:pathData="M35,35.2468C29.8084,35.2468 21.3889,38.3349 21.3889,44.4649C21.3889,44.4649 23.6574,50.5554 35,50.5554C46.3426,50.5554 48.6111,44.4649 48.6111,44.4649C48.6111,38.3349 40.1917,35.2468 35,35.2468ZM35,35.2468C39.2956,35.2468 42.7778,31.7093 42.7778,27.3456C42.7778,22.9818 39.2956,19.4443 35,19.4443C30.7045,19.4443 27.2222,22.9818 27.2222,27.3456C27.2222,31.7093 30.7045,35.2468 35,35.2468Z"  android:strokeWidth="2"  android:strokeColor="@color/sync_profile_stroke" /gt; lt;/vectorgt;  

где

 android:fillColor="@color/color_surface"  android:fillColor="@color/sync_profile_fill"  

есть 2 разных ссылки (темная/светлая тема)

Я уже создал тему для сочинения. Могу ли я использовать цвета из темы «Создать» в чертеже?

Ответ №1:

В шаблоне создания по умолчанию есть файл под названием Theme.kt . Вы можете создать для него небольшую пользовательскую композицию, что-то вроде этого

 @Composable fun getThemedColour() : Color{ //This is the Compose Color, double check while importing  if(isSystemInDarkTheme()) return Blue else return Red }  

Комментарии:

1. Привет и спасибо вам за ваш ответ. Твой ответ мне на самом деле не помогает. У меня уже есть тема с определенными цветами для режима темного/светлого. Мой вопрос заключался в том, могу ли я каким-то образом ссылаться на эти цвета в xml-файле для рисования, например android:fillColor=MatherialTheme. Мифема.миКолор

2. Нет, это было бы невозможно. Если вы используете шаблон по умолчанию, без внесения каких-либо изменений, появится a themes.xml , который содержит источник значений цвета по умолчанию, используемых в приложении, например Purple200 , и другие, поэтому, если вы хотите ссылаться на эти значения, вам нужно будет явно объявить их в чем-то вроде colors.xml.

3. То, что вы, по сути, пытаетесь сделать, — это попытаться ссылаться на что-то программное и динамическое из XML. Теперь я не знаю, знаете ли вы об этом или нет, но они просто противоположности. XML построен так, чтобы быть статичным, и именно по этой причине в наши дни мы переходим к программной парадигме, это JC