Когда вы проектируете макет активити в android studio вы можете у корневого контейнера задать цвет фона выбрав соответствующее значение атрибута android:background.
Как в примере ниже — черный фон
1 2 3 4 5 6 7 8 9 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" tools:context=".MainActivity"> |
Это будет работать верно до тех пор, пока вы не решите добавить общий внешний отступ всего для всего родительского контейнера. К примеру, вы не хотите чтобы дочерние элементы прилипали к краям и добавите отступ слева и справа — 8dp.
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:background="@color/black" tools:context=".MainActivity"> |
Вы тот час же обнаружите, что корневой контейнер имеет еще одного родителя, у которого цвет фона скорее всего задаётся системными настройками устройства. Обычно это белый цвет.
Через шаблон до него не добраться, так как в макете нет этого контейнера, потому мы будем менять его через код.
В следующем примере (kotlin) установим цвет фона — черный:
1 2 3 4 5 6 7 8 9 10 11 |
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_main) val view = this.window.decorView; view.setBackgroundColor(resources.getColor(R.color.black, null)) } } |