gpt4 book ai didi

android - 以编程方式更改 AppBarLayout 主题

转载 作者:行者123 更新时间:2023-12-04 23:41:04 26 4
gpt4 key购买 nike

首先我通过 xml 设置 AppBarLayout 主题:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/MyTheme.AppBarOverlay">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/MyTheme.PopupOverlay"
app:titleTextAppearance="@style/MyTheme.Toolbar.Title" />

在哪里 @style/MyTheme.AppBarOverlay 包含:
<style name="MyTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="colorPrimary">@drawable/toolbar_background</item>
</style>

但是在某些情况下,我想以编程方式更改它而不更改 Activity 的主题(仅 AppBarLayout 的主题)。

我试过这两种方法都没有成功:
  • 第一的:
    ActionBar actionBar = getSupportActionBar();
    actionBar.getThemedContext().setTheme(R.style.MyTheme_AppBarOverlay_2);
  • 第二:
    AppBarLayout mAppBar = (AppBarLayout) findViewById(R.id.appbar); mAppBar.getContext().setTheme(R.style.MyTheme_AppBarOverlay_2);
  • 最佳答案

    Android View 无法在通货膨胀后更改主题。您必须更改主题单独定义的每个属性。您可以使用 Compose TopAppBar 解决此问题。 ,因为 Compose 小部件会对主题更改使用react。

    关于android - 以编程方式更改 AppBarLayout 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41786418/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com