Перейти к содержимому

Android studio как изменить цвет верхней панели

  • автор:

Изменение цвета строки состояния и StatusBar в Android приложении

Статья о том, как динамически изменять цвет элементов StatusBar и ActionBar .

Цвет строки состояния можно поменять кодом:

getSupportActionBar().setBackgroundDrawable( new ColorDrawable(Color.parseColor(color))); 

Цвет главной панели StatusBar можно поменять через метод:

public void setStatusBarColor(String color)  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)  Window window = getWindow(); int statusBarColor = Color.parseColor(color); if (statusBarColor == Color.BLACK && window.getNavigationBarColor() == Color.BLACK)  window.clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); > else  window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); > window.setStatusBarColor(statusBarColor); > > 

Пример приложения, в котором при нажатии на кнопку меняется цвет обоих компонентов (без строчки package ):

import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Build; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; public class MainActivity extends AppCompatActivity  Button button; @Override protected void onCreate(Bundle savedInstanceState)  super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()  @Override public void onClick(View v)  String color = "#AA3939"; setStatusBarColor(color); getSupportActionBar().setBackgroundDrawable( new ColorDrawable(Color.parseColor(color))); > >); > public void setStatusBarColor(String color)  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)  Window window = getWindow(); int statusBarColor = Color.parseColor(color); if (statusBarColor == Color.BLACK && window.getNavigationBarColor() == Color.BLACK)  window.clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); > else  window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); > window.setStatusBarColor(statusBarColor); > > > 
  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical" >  android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" />  

Запущенное приложение

Статья о том, как динамически изменять цвет элементов StatusBar и ActionBar .

Статья о том, как динамически изменять цвет элементов StatusBar и ActionBar .

Harrix

  • GitHub User
  • [email protected]

Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.

Кастомизация ActionBar

Статья является переводом топика из блога android-developers. В ней показывается, как стилизовать ActionBar нужным вам образом. В качестве примера рассматривается изменение оформления под общую цветовую гамму вышеописанного блога.

Использование общепринятого элемента навигации ActionBar упрощает освоение программы пользователем, и не требует от разработчика придумывать свои собственные «велосипеды». Но раз уж все используют один и тот же паттерн, то, ясное дело, каждый стилизует его под своё приложение. Следующий пример показывает, как стилизовать Action Bar под общий вид приложения. Будем изменять стандартную тему оформления Holo.Light для соответствия блогу android-developers.

Значок

Для создания значка в выбранной цветовой схеме можно использовать Android Asset Studio. Будем использовать это изображение, как логотип.

image

Навигация

Секция навигации работает в трёх разных режимах. Рассмотрим их по очереди.

Стандартный

Стандартный режим просто отображает название Activity. Для этого стилизация не нужна, поехали дальше.

Список

Слева — стандартный выпадающий список, справа — тот эффект, который нам нужен.

image

В стандартном списке используется цветовая схема, в которой доминирует голубой цвет. Чтобы реализовать нужную нам схему, перегрузим android:actionDropDownStyle

    

В этом xml-файле для оформления подсветки, Spinner и верхней панели используется комбинация state-list’ов и nine-patch изображений.

Вкладки

Ниже расположены скриншоты оформления вкладок «до» и «после».

image

И снова, в стандартной тема для вкладок доминирует голубой цвет. Для переоформления перегрузим android:actionBarTabStyle.

    

Действия (Actions)

И снова, «до» и «после».

image

При выделении того или иного, элемента он подсвечивается голубым. Для изменения, перегрузим android:selectableItemBackground

 @drawable/ad_selectable_background 

Также, меню при расширении показывает голубой прямоугольник наверху списка. Для изменения перегрузим android:popupMenuStyle.

    

Также изменим цвет выделенных элементов в меню.

    

Кроме этого еще нужно изменить оформление флажков и радиокнопок.

 @drawable/ad_btn_check_holo_light @drawable/ad_btn_radio_holo_light 

Фон

В принципе, можно также изменить фон. По умолчанию, в теме Holo.Light он прозрачный. Для изменения нужно перегрузить android:actionBarStyle.

Соединяем всё вместе

Для объединения всех элементов, создадим кастомный стиль.

   

Теперь можно применять этот стиль оформления к какому-либо Activity или всему приложению.

Важно еще отметить, что некоторые стили, которые мы перегрузили, действуют на все виджеты (например android:selectableItemBackground). То есть, мы таким образом изменяем оформление всего приложения, что бывает весьма полезно, если вы стараетесь выдержать общий стиль. Реклама

Google+

© 2017 А.Климов

Android studio как изменить цвет верхней панели

В приложении Android также можно определять ресурсы цветов (Color). Они должны храниться в файле по пути res/values и также, как и ресурсы строк, заключены в тег . Так, по умолчанию при создании самого простого проекта в папку res/values добавляется файл colors.xml :

  #FFBB86FC #FF6200EE #FF3700B3 #FF03DAC5 #FF018786 #FF000000 #FFFFFFFF  

Цвет определяется с помощью элемента . Его атрибут name устанавливает название цвета, которое будет использоваться в приложении, а шестнадцатеричное число — значение цвета.

Для задания цветовых ресурсов можно использовать следующие форматы:

  • #RGB (#F00 — 12-битное значение)
  • #ARGB (#8F00 — 12-битное значение с добавлением альфа-канала)
  • #RRGGBB (#FF00FF — 24-битное значение)
  • #AARRGGBB (#80FF00FF — 24-битное значение с добавлением альфа-канала)

Чтобы не трогать и не портить данный файл, определим свой новый файл ресурсов и для этого добавим в папку res/values новый файл ресурсов, который назовем my_colors.xml .

Использование цвета в Android Studio и ресурсы color

Изменим файл my_colors.xml , добавив в него пару цветов:

  #A0EAE1 #00695C  

Применим цвета в файле activity_main.xml :

С помощью атрибута android:textColor устанавливается цвет текста в TextView, а атрибут android:background устанавливает фон TextView. В качестве значения они используют цвет, например, в том же шестнадцатеричном формате. Для получения самого цвета после «@color/» указывается имя ресурса.

Использование цвета в Android и Java и ресурсы color

Также можно использовать цветовые ресурсы в коде MainActivity:

package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.content.res.Resources; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); // получаем ресурсы Resources resources = getResources(); int textColor = resources.getColor(R.color.textViewFontColor, null); int backgroundColor = resources.getColor(R.color.textViewBackColor, null); ConstraintLayout constraintLayout = new ConstraintLayout(this); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT , ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; TextView textView = new TextView(this); textView.setText("Hello Android"); textView.setTextSize(32); // используем ресурсы color textView.setTextColor(textColor); textView.setBackgroundColor(backgroundColor); textView.setLayoutParams(layoutParams); constraintLayout.addView(textView); setContentView(constraintLayout); >>

Для получения цвета из ресурсов применяется метод resources.getColor() , который принимает два параметра. Первый параметр — идентификатор ресурса, цвет которого надо получить. Второй параметр представляет тему. Но поскольку в данном случае тема не важна, для этого параметра передаем значение null

Следует учитывать, что метод resources.getColor() с двумя параметрами, который использован выше, доступен, если для минимальная версия Android не ниже Android 6.0 (или Android 23). Однако минимальная версия Android ниже, то можно использовать устаревшую версию с одним параметром:

int textColor = resources.getColor(R.color.textViewFontColor); // вместо //int textColor = resources.getColor(R.color.textViewFontColor, null);

Как изменить цвет верхней панели приложения?

3bd74b391a734049b76ef196ff0c7ee1.jpg

java

  • Java
  • +1 ещё

Как разрабатывать приложение Spring, чтобы каждый раз не деплоить его на сервер для отладки?

  • 1 подписчик
  • час назад
  • 29 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *