如何动态更改视图样式?

时间:2016-08-15 16:48:46

标签: android android-layout android-theme android-styles

我的应用程序中有一些使用styles.xml文件中的自定义样式的视图。例如:

FB.XFBML.parse

这种风格:

<android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer_menu"
        style="@style/NavigationDrawerStyle"/>

我希望用户可以在用户按下屏幕按钮时动态切换应用程序的某些自定义视图的样式。我知道如果你在onCreate()方法之前调用Activity.setTheme(),你可以动态地改变应用程序的主题,但在这种情况下,普通的Views(例如,NavigationView),没有setTheme或setStyle方法,所以它似乎无法动态改变它们的风格。

我在styles.xml文件中声明了这个样式:

<style name="NavigationDrawerStyle">
        <item name="android:background">@color/colorPrimaryDark</item>
    </style>

所以,实现这一目标的完美(但不可能)的方法就是这样:

<style name="NavigationDrawerStyle.Grey">
        <!--<item name="android:background">@color/colorPrimaryDark</item>-->
    </style>

但由于这些方法不存在......无法以这种方式实现。任何有关这方面的帮助都将被批评,我完全坚持这一点。

谢谢

0 个答案:

没有答案