#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