Android 为按钮定义单个可绘制按钮,并根据选定的MeterialDesign主题对其进行更改
我有一个ImageButton,它使用drawable/sampleimage.xml作为源代码,我正在为我的应用程序主题使用MaterialDesign 我的按钮布局如下所示:Android 为按钮定义单个可绘制按钮,并根据选定的MeterialDesign主题对其进行更改,android,android-studio,android-layout,kotlin,material-design,Android,Android Studio,Android Layout,Kotlin,Material Design,我有一个ImageButton,它使用drawable/sampleimage.xml作为源代码,我正在为我的应用程序主题使用MaterialDesign 我的按钮布局如下所示: <ImageButton android:id="@+id/sampleButton" android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/s
<ImageButton
android:id="@+id/sampleButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/sampleimage.xml" />
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorOnSurface"
android:pathData="M8,5v14l11,-7z"/>
</vector>
及
在安卓9上
我不知道如何定义一个单一的可绘制的按钮,它会根据所选的主题而变化。
我想使用drawable/sampleimage\u light.xml作为亮主题,使用暗主题时使用drawable/sampleimage\u dark.xml。我的可绘制对象是矢量图像,所以我只是将填充颜色更改为?attr/colorOnSurface 现在,我的drawable如下所示:
<ImageButton
android:id="@+id/sampleButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/sampleimage.xml" />
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="?attr/colorOnSurface"
android:pathData="M8,5v14l11,-7z"/>
</vector>
您可以在drawable night
文件夹中创建夜间模式可绘制资源,这些资源应该会自动使用。@Pawel谢谢,我会尝试的!