【问题标题】:How to create random Actionbar and status bar Oncreate mode如何创建随机的Actionbar和状态栏Oncreate模式
【发布时间】:2025-12-08 16:50:01
【问题描述】:

我想在onCreate 中创建随机的ActionbarStatus bar,具有指定的颜色(橙色、绿色和粉红色)。我在下面找到了一些有用的代码:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ActionBar actionBar; 
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#879f38")));

【问题讨论】:

  • 您想在每次活动打开时更改颜色还是什么?
  • @SwapnilMeshram 是的,完全正确

标签: java android android-studio android-actionbar android-statusbar


【解决方案1】:

您可以简单地在 color.xml 中创建颜色数组并从中选择一种随机颜色来设置操作栏颜色以及状态栏颜色。

color.xml

 <array name="actionbar_color">
    <item>@color/bright_pink</item>
    <item>@color/red</item>
    <item>@color/orange</item>
    <item>@color/yellow</item>
    <item>@color/chartreuse</item>
    <item>@color/green</item>
    <item>@color/spring_green</item>
    <item>@color/cyan</item>
    <item>@color/azure</item>
    <item>@color/blue</item>
    <item>@color/violet</item>
    <item>@color/magenta</item>
</array>

在你的活动中

 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);     

// further code

int[] actionbarColor = context.getResources().getIntArray(R.array.actionbar_color);
actionBar.setBackgroundDrawable(new ColorDrawable(getRandom(actionbarColor)));
}

public int getRandom(int[] array) {
int rnd = new Random().nextInt(array.length);
return array[rnd];
}

【讨论】:

    【解决方案2】:

    这对我有用,你也可以看到一些实验代码被注释掉了。我使用 AppCompatActivity。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout);
        setupActionBar();
    }
    
        private void setToolbarColor() {
            final int toolbarColor = getResources().getColor(R.id.color_orange);
    
            // create our manager instance after the content view is set
            final SystemBarTintManager tintManager = new SystemBarTintManager(this);
            // enable status bar tint
            tintManager.setStatusBarTintEnabled(true);
            // enable navigation bar tint
            tintManager.setNavigationBarTintEnabled(true);
    
            // set a custom tint color for all system bars
            tintManager.setTintColor(toolbarColor);
    
    //        // set a custom navigation bar resource
    //        tintManager.setNavigationBarTintResource(R.drawable.my_tint);
    //        // set a custom status bar drawable
    //        tintManager.setStatusBarTintDrawable(MyDrawable);
    
            final ActionBar actionBar = getSupportActionBar();
            if (null != actionBar) {
    //        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    //            Window.setStatusBarColor();
    //            getWindow().setStatusBarColor(Color.BLUE);
    //        }
                actionBar.setBackgroundDrawable(new ColorDrawable(toolbarColor));
            }
        }
    

    【讨论】:

      【解决方案3】:

      随机ActionBar颜色(根据当天)

      @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
      public void setColor_of_Day() throws ParseException {
          String day=get_Day(get_Date());
          int colorid;
          switch (day){
              case "Sunday":
                  colorid=getResources().getColor(R.color.sunday);
                  break;
      
              case "Monday":
                  colorid=getResources().getColor(R.color.monday);
                  break;
      
              case "Tuesday":
                  colorid=getResources().getColor(R.color.tuesday);
                  break;
      
              case "Wednesday":
                  colorid=getResources().getColor(R.color.wednesday);
                  break;
      
              case "Thursday":
                  colorid=getResources().getColor(R.color.thursday);
                  break;
      
              case "Friday":
                  colorid=getResources().getColor(R.color.friday);
                  break;
      
              case "Saturday":
                  colorid=getResources().getColor(R.color.saturday);
                  break;
      
              default:
                  return;
          }
          getSupportActionBar().setBackgroundDrawable(new ColorDrawable(colorid));
          getWindow().setStatusBarColor(colorid);
      }
      
      public String get_Day(String date) throws ParseException {
          SimpleDateFormat format1=new SimpleDateFormat("dd/MM/yyyy");
          Date dt1=format1.parse(date);
          DateFormat format2=new SimpleDateFormat("EEEE");
          String day=format2.format(dt1);
          return day;
      }
      
      
      public String get_Date(){
          DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
          Date data= Calendar.getInstance().getTime();
          String date=dateFormat.format(data);
          String formatted_Date=FormatDate(date);
          return formatted_Date;
      }
      

      【讨论】: