gpt4 book ai didi

java - 如何使用 Android SDK 在 onCreate 语句中动态更改 Activity 的背景颜色?

转载 作者:行者123 更新时间:2023-11-30 09:12:43 25 4
gpt4 key购买 nike

我想知道如果设置为“红色”或“蓝色”,是否可以通过检查 onCreate 语句动态更改 Activity 的背景颜色,然后相应地将 Activity 的背景颜色更改为“红色”或“蓝色”。

我在 StackOverflow 上找到了几个看起来对其他人有用的答案,但它们似乎对我不起作用。这是我尝试过的事情的列表:

  1. 结合 View 使用 setBackgroundColor()。

    if (settings.getBoolean("Blue", true)) {

    View currentView = (View) findViewById(R.layout.home_screen);
    currentView.setBackgroundColor(getResources().getColor(R.color.blue));

    } if (settings.getBoolean("Red", false)) {

    View currentView = (View) findViewById(R.layout.home_screen);
    currentView.setBackgroundColor(getResources().getColor(R.color.red));

    }
  2. 使用 setTheme() 结合不同的样式。它的工作方式是我的元素(例如 TextViews)的背景更改为“红色”或“蓝色”,而不是整个 Activity 的背景颜色。

    <style name="RedTheme">
    <item name="android:background">@color/redbackground</item>
    <item name="android:windowBackground">@color/redbackground</item>
    <item name="android:colorBackground">@color/redbackground</item>
    </style>

    在这种情况下,只有 android:background 似乎可以改变任何东西,但不幸的是它改变了我的 TextView 元素的背景颜色。

  3. 使用 getWindow().getDecorView().setBackgroundColor(Color.BLUE),但这似乎也什么都不做。

有没有人可以告诉我我做错了什么或告诉我如何才能成功完成此任务?

提前致谢!


按要求添加了完整的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeTheme();
setContentView(R.layout.activity_home_screen);
}

private void changeTheme() {
SharedPreferences settings = getSharedPreferences(Settings, 0);

if (settings.getBoolean("Blue", true)) {

View currentView = (View) findViewById(R.layout.activity_home_screen);
currentView.setBackgroundColor(getResources().getColor(R.color.blue));

} if (settings.getBoolean("Red", false)) {

View currentView = (View) findViewById(R.layout.activity_home_screen);
currentView.setBackgroundColor(getResources().getColor(R.color.red));

}
}

最佳答案

首先,home_screen 的主要布局应该是FrameLayout,不要忘记给它一些id,即像这样

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".HomeScreenActivity"
android:id="@+id/activity_home_screen">

<!-- rest of your UI here -->

</FrameLayout>

然后在您的 onCreate 中创建 View 变量并通过 ID 将其连接到此布局。从现在开始,您的 setBackgroundColor() 应该可以工作(下面的代码稍作改动对我有用 - 我不是指设置,但一段时间后我调用了 changeTheme()值改变)

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);

changeTheme();
}

private void changeTheme()
{
SharedPreferences settings = getSharedPreferences(Settings, 0);
View currentView = (View) findViewById(R.id.activity_home_screen);

if (settings.getBoolean("Blue", true))
{
currentView.setBackgroundColor(getResources().getColor(R.color.blue));
}
else if (settings.getBoolean("Red", false))
{
currentView.setBackgroundColor(getResources().getColor(R.color.red));
}
}

关于java - 如何使用 Android SDK 在 onCreate 语句中动态更改 Activity 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375463/

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