亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

切換主題,

切換主題,

叮當貓咪 2023-08-16 15:52:06
我想在我的應用程序中添加多個主題,以允許用戶在運行時更改應用程序主題。我在網上找到了代碼,已成功將其添加到我的應用程序中,但我只能更改一項活動的主題,這并不是我的真正意圖。當用戶在主題設置活動中更改主題時,我需要將該更改應用到所有活動中。ThemeActivity.java @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    themeUtils.onActivityCreateSetTheme(this);    setContentView(R.layout.activity_theme);    blackbtn = findViewById(R.id.blackbutton);    bluebtn = findViewById(R.id.bluebutton);    blackbtn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            themeUtils.changeToTheme(ThemeActivity.this, themeUtils.BLACK);        }    });    bluebtn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            themeUtils.changeToTheme(ThemeActivity.this, themeUtils.BLUE);        }    });}ThemeUtils.javapublic class themeUtils{private static int cTheme;public final static int BLACK = 0;public final static int BLUE = 1;public static void changeToTheme(Activity activity, int theme){    cTheme = theme;    activity.finish();    activity.startActivity(new Intent(activity, activity.getClass()));}public static void onActivityCreateSetTheme(Activity activity){    switch (cTheme)    {        default:        case BLACK:            activity.setTheme(R.style.BlackTheme);            break;        case BLUE:            activity.setTheme(R.style.BlueTheme);            break;    }
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

使用屬性值設置顏色

例如,這是 textview 的顏色

<attr name="textviewcolor" format="color"></attr>

在 style.xml 中為不同的主題選擇創建不同的樣式

這是深色主題樣式的文本顏色

<style name="AppTheme.Dark" parent="Theme.AppCompat.Light.NoActionBar"><item name="textviewcolor">#fff</item></style>

這是默認主題樣式的文本顏色

<style name="AppTheme.Defult" parent="Theme.AppCompat.Light.NoActionBar"><item name="textviewcolor">#000</item></style>

使用此屬性值(textviewcolor)到textview來設置顏色,如下所示

                      <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="text"
                        android:textColor="?attr/textviewcolor"/>

您只需在按鈕單擊中更改共享首選項中的主題名稱并刷新活動,其余的事情將在下面提到您將如何做到這一點..

首先像這樣創建主題util類


public class ThemeUtil {


public static final int THEME_DEFAULT=1;

public static final int THEME_DARK=2;

public static final int ALERTTHEME=3;

public static final int ALERTTHEMEDARK=4;




public static int getThemeId(int theme){

    int themeId=0;

    switch (theme){


        case THEME_DARK:

            themeId = R.style.AppTheme_Dark;

            break;


        case THEME_DEFAULT :

            themeId = R.style.AppTheme;

            break;


        default:

            break;

    }

    return themeId;

}}

建議:使用共享首選項來指定主題的名稱


然后創建一個抽象類,通過擴展該類將主題設置為所有活動


public class ChangethemeActivity extends AppCompatActivity{


@Override

protected void onCreate(@Nullable Bundle savedInstanceState){

    super.onCreate(savedInstanceState);


    //get your theme name using sharedpreference and check what you have saved in theme name value


    if(dark){

    setTheme(ThemeUtil.getThemeId(1));

    }

    else{

      setTheme(ThemeUtil.getThemeId(2));

    }  }}}

最后:在要更改主題的活動中使用 ChangethemeActivity而不是 AppCompatActivity


這是我實現應用程序主題更改功能的方式,請告訴我這是否解決了您的問題


查看完整回答
反對 回復 2023-08-16
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

創建一個基本活動并從中擴展所有其他活動,然后在基本活動的 onCreate 方法中設置主題,例如:


public abstract class BaseActivity extends AppCompatActivity{

    private int theme;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setTheme(theme);

    }

}


private void setTheme(int theme){

    this.theme = theme;

}

然后,當您想要更改主題時,只需在 theme 中設置另一個主題資源 id 并重新啟動您的 Activity:


setTheme(R.style.AppThemeChristmas);

Intent intent = getIntent();

finish();

startActivity(intent);


查看完整回答
反對 回復 2023-08-16
  • 2 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號