How to add custom item in android Theme declaration?

后端 未结 1 1996
谎友^
谎友^ 2021-02-05 17:56

I\'m having few custom themes in my styles.xml
Now whenever the activity takes the theme, it uses the colorPrimary, colorPrimaryDark and <

相关标签:
1条回答
  • 2021-02-05 18:25

    Create a attrs.xml file shown in image.

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
       <!-- Other values-->
       <attr name="customBgColor" format="reference" />
    
    </resources>
    

    customTheme 1

    <style name = "customTheme1" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Other values-->
        <item name="customBgColor">#d3d3d3</item>
    </style>
    

    customTheme 2

    <style name = "customTheme2" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Other values-->
        <!-- Black Color in theme2-->
        <item name="customBgColor">#111111</item>
    </style>
    

    Setting Color to TextView as example.

    You can use it in similar way in any widget anywhere.

    This TextView is used in below activity.

    <TextView
        android:id="@+id/txt_rate_us_about"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Rate us on Play Store!"
        android:textColor="?attr/customBgColor"
        android:textSize="20dp" />
    

    Want to set theme dynamically.

    public class AboutUsActivity extends Activity {
    
        int theme = 1;
        // int theme = 2;  2nd theme.
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            switch (theme) {
                default:
                case 1:
                    this.setTheme(R.style.customTheme1);
                    break;
                case 2:
                    this.setTheme(R.style.customTheme2);
                    break;
    
            }
            // you must call `setTheme()` before `setContentView()`
            setContentView(R.layout.activity_about);
    
        }
    

    For multiple activities you have set theme for each of them separately.

    0 讨论(0)
提交回复
热议问题