android 可绘制对象自动使用原色着色,并且不会改变
android drawables are colored automatically with color primary and it will not change
当我将任何视图的背景更改为某个可绘制对象时,它会以原色着色(在我的例子中为#FF6200EE),并且不会改变。
例如,当我更改按钮的背景时,背景颜色会自动设置为原色,即使设置了 backgroudTint 也不会更改
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/rectangle"
android:backgroundTint="@color/white"/>
这里是 rectangle.XML 文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="40dp" android:height="40dp" />
<solid android:color="@color/white"/>
</shape>
编辑:这里是整个主要 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Theme.TourGuide.AppBarOverlay">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/rectangle"
style="@style/Widget.AppCompat.Button.Colored"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
这是 themes.xml 文件:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.TourGuide"
parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?
attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.TourGuide.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.TourGuide.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.TourGuide.PopupOverlay"
parent="ThemeOverlay.AppCompat.Light" />
</resources>
首先,您使用的是MaterialComponents Theme,我建议您也使用Material Components。您可以使用:
而不是 Button
com.google.android.material.button.MaterialButton
有关 Material 组件和 Material 主题的更多信息,您可以在此处找到:https://material.io/components?platform=android
要更改 Button 或 MaterialButton 的颜色,您需要使用:
app:backgroundTint="@color/somecolor"
而不是:
android:backgroundTint="@color/somecolor"
如果有效请告诉我!
当我将任何视图的背景更改为某个可绘制对象时,它会以原色着色(在我的例子中为#FF6200EE),并且不会改变。
例如,当我更改按钮的背景时,背景颜色会自动设置为原色,即使设置了 backgroudTint 也不会更改
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/rectangle"
android:backgroundTint="@color/white"/>
这里是 rectangle.XML 文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="40dp" android:height="40dp" />
<solid android:color="@color/white"/>
</shape>
编辑:这里是整个主要 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Theme.TourGuide.AppBarOverlay">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/rectangle"
style="@style/Widget.AppCompat.Button.Colored"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
这是 themes.xml 文件:
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.TourGuide"
parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?
attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.TourGuide.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Theme.TourGuide.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.TourGuide.PopupOverlay"
parent="ThemeOverlay.AppCompat.Light" />
</resources>
首先,您使用的是MaterialComponents Theme,我建议您也使用Material Components。您可以使用:
而不是 Buttoncom.google.android.material.button.MaterialButton
有关 Material 组件和 Material 主题的更多信息,您可以在此处找到:https://material.io/components?platform=android
要更改 Button 或 MaterialButton 的颜色,您需要使用:
app:backgroundTint="@color/somecolor"
而不是:
android:backgroundTint="@color/somecolor"
如果有效请告诉我!